|
尝试使用path和fillpath反锯齿:
- uses
- GdiPlus;
- procedure TForm1.FormPaint(Sender: TObject);
- var
- gdiplus: IGdiplus;
- path: IGdiplusPath;
- brush: IGdiplusBrush;
- begin
- gdiplus := CoGdiplusStartup(nil);
- try
- path := gdiplus.CreatePath(1);
- brush := gdiplus.CreateSolidBrush(clRed); // 创建一个红色画刷
- try
- // 添加一个矩形到路径
- path.AddRectangle(10, 10, 100, 100);
- // 填充路径
- gdiplus.FillPath(brush, path);
- finally
- brush.Release;
- path.Release;
- end;
- finally
- gdiplus.Release;
- end;
- end;
复制代码- uses
- GdiPOBJ, GdiPAPI;
-
- procedure CreateTransparentBitmap;
- var
- Bitmap: TGPPGraphics;
- Brush: TGPBrush;
- begin
- Bitmap := TGPPGraphics.Create(200, 200);
- try
- // 设置透明背景
- Bitmap.Clear(MakeColor(0, 0, 0, 0));
-
- // 创建一个红色的画刷
- Brush := TGPSolidBrush.Create(MakeColor(255, 0, 0, 0));
- try
- // 在位图上绘制一个半透明的矩形
- Bitmap.FillRectangle(Brush, 50, 50, 100, 100);
- finally
- Brush.Free;
- end;
-
- // 在这里可以保存或者处理Bitmap对象...
-
- finally
- Bitmap.Free;
- end;
- end;
复制代码
在Delphi 2007中使用GDI+,你需要首先确保你的系统上安装了GDI+的组件或库。Delphi 2007并不直接支持GDI+,因此你可能需要使用第三方库,如GDIPOBJ。
以上是一个简单的例子,展示如何在Delphi 2007中使用GDI+来创建一个带有透明背景的图像:
在这个例子中,我们首先创建了一个200x200像素的TGPPGraphics对象,然后使用Clear方法将背景设置为完全透明。接着,我们创建了一个红色的TGPSolidBrush画刷,并使用FillRectangle方法在位图上绘制了一个半透明的矩形。最后,释放了所有的资源。
请注意,这只是一个简单的示例,实际使用时可能需要根据你的具体需求进行调整。如果你需要更详细的GDI+功能,你可能需要查看GDIPOBJ库提供的其他类和方法。
ref:https://bbs.csdn.net/topics/392146351
|
|