我的任务是:
如何在Delphi XE中做到这一点?
var
Png: TPngImage;
X, Y: Integer;
Bitmap: TBitmap;
begin
Bitmap := TBitmap.Create();
Bitmap.PixelFormat := pf32bit;
Png := TPngImage.Create();
try
Bitmap.SetSize(100, 100);
// How to clear background in transparent color correctly?
// I tried to use this, but the image in PNG file has solid white background:
for Y := 0 to Bitmap.Height - 1 do
for X := 0 to Bitmap.Width - 1 do
Bitmap.Canvas.Pixels[X, Y]:= $00FFFFFF;
// Now drawing something on a Bitmap.Canvas...
Bitmap.Canvas.Pen.Color := clRed;
Bitmap.Canvas.Rectangle(20, 20, 60, 60);
// Is this correct?
Png.Assign(Bitmap);
Png.SaveToFile('image.png');
finally
Png.Free();
Bitmap.Free();
end;
end;
或多或少是多林答案的副本。它展示了如何制作透明的png图像以及如何清除背景。
uses
PngImage;
...
var
bmp: TBitmap;
png: TPngImage;
begin
bmp := TBitmap.Create;
bmp.SetSize(200,200);
bmp.Canvas.Brush.Color := clBlack;
bmp.Canvas.Rectangle( 20, 20, 160, 160 );
bmp.Canvas.Brush.Style := bsClear;
bmp.Canvas.Rectangle(1, 1, 199, 199);
bmp.Canvas.Brush.Color := clWhite;
bmp.Canvas.Pen.Color := clRed;
bmp.Canvas.TextOut( 35, 20, 'Hello transparent world');
bmp.TransparentColor := clWhite;
bmp.Transparent := True;
png := TPngImage.Create;
png.Assign( bmp );
png.SaveToFile( 'C:\test.png' );
bmp.Free;
png.Free;
end;
问题内容: 我正在尝试创建透明的png图像,并对其他各种png和jpg进行分层,以创建具有透明度的最终png。我在创建初始的空透明png时遇到问题。目前有白色背景。 谁能指出我正确的方向。到目前为止,这是我的代码… 问题答案: 在每个新图层上设置。 尝试这个:
我将png文件加载到TPNGImage中,然后将其显示在TImage中。没问题。然后我创建一个TBitmap并将其分配给TPNGImage,并将其显示在TImage中。没问题。 然后我创建第二个TPNGImage并将其分配给TBitmap。在这种情况下,如果我在TImage中显示它,它就失去了透明度。如果我设置了TBitmap。透明到True,在指定给PNGImage之前,PNGImage基本上是
问题内容: 我看过一些代码源,但是我不明白… 我使用Java 7 请, 如何将RGB (红色,绿色,蓝色) 字节数组 (或类似 格式 ) 转换为.PNG文件格式 ? 可能表示“ RGB像素”的数组中的示例: 重要方面: 我尝试仅从byte []“ 而不是 从以前的现有文件” 生成.PNG文件 现有的API有可能吗?;) 这是我的第一个代码: .... 错误: 找不到合适的方法 这里是 Jeremy
我试图拖动对象表示为PNG图像透明背景从AnchorPane到HBox。 我使用以下线条将图像设置为拖动视图: 对于不透明的背景图像,这一切都很好,但对于透明的图像,图像的背景是白色的,不透明度为“0.8”。 我尝试为节点拍摄快照: 但它不起作用,白色背景仍然存在。有没有其他方法可以让它像原始图像一样透明?
问题内容: 我有一个位图: 但我不会将图像显示给用户。我希望Alpha为100(总共255)。如果这不可能,我可以设置透明度吗? 问题答案: 您也可以尝试使用BitmapDrawable代替。如果这对您有用,则取决于您使用位图的方式… 编辑 正如评论者所问的那样,他如何使用alpha存储位图,下面是一些代码:
透明像素由零的alpha值和任意的红色、绿色和蓝色值组成。因此,即使一个像素是透明的,它仍然有一种颜色。 我现在想创建一个完全透明的位图,但有一个特定的颜色(例如白色)。但我尝试的每一种方法都会得到一个黑色的透明位图(就像png文件中的一样)。 这对我来说非常重要,因为我通过画布在位图上呈现抗锯齿文本。在角落上,半透明像素变得更暗。我想做的是事先用与文本相同的颜色填充位图或画布,但透明。 我的密码