现金求助BlockEngine正常显示透明PNG图片的问题(200)

  • 主题发起人 主题发起人 獐子岛
  • 开始时间 开始时间

獐子岛

Unregistered / Unconfirmed
GUEST, unregistred user!
BlockEngine调入透明的PNG图片,透明部分显示为黑色。看BlockEngine的源码,不知如何修改,如果帮助解决此问题,可以现金回报,价格好商量。
 
问题补充:procedure Image.SetImage(const Value: TGraphic);var Count, i: integer; CurW, CurH: single; x: integer;begin if FBitmap <> Value then begin if FBitmap <> nil then FBitmap.Free; if (Value is TMetafile) then begin FBitmap := TGraphic(Value.ClassType.Create); end else begin if Value is TBitmap then begin FBitmap := TBitmap.Create; FBitmap.Assign(Value); end; if (Value is TdxPNGImage) then begin FBitmap := TGraphic(Value.ClassType.Create); FBitmap.Assign(Value);//这里将FBitmap建立为TdxPNGImage对象 end; end; end; for i := 0 to High(FB) do if FB <> nil then FB.Free; SetLength(FB, 0); if FBitmap.Width * FBitmap.Height > 0 then begin if (FBitmap is TBitmap) then begin SetLength(FB, 1000); CurW := FBitmap.Width; CurH := FBitmap.Height; FB[0] := TGPBitmap.Create(TBitmap(FBitmap).Handle, TBitmap(FBitmap).Palette); Count := 1; while (CurW > 32) and (CurH > 32) do begin CurW := CurW / 2; CurH := CurH / 2; FB[Count] := FB[0].GetThumbnailImage(Round(CurW), Round(CurH)); x := FB[Count].GetWidth; Inc(Count); end; SetLength(FB, Count); end; if FBitmap is TMetafile then begin SetLength(FB, 1); FB[0] := TGPMetafile.Create(TMetafile(FBitmap).Handle, false); end;{//就是这里,不知怎么处理TdxPNGImage对象?//FB的类型是TGPImage类型 if FBitmap is TdxPNGImage then begin SetLength(FB, 1); FB[0] := TGPImage.Create(TdxPNGImage(FBitmap).,false); end;} end;end;
 
我这里处理Png的pas源码
 
你不会把 整成 32位 TBitmap吗,
 
实际上这个问题,是个GDI+方面的问题,当我用devexpress中的TdxPNGImage调入一个透明PNG图片,然后,我要转换成TGPImage对象,再用TGPGraphics对象画出来。现在的问题是如何转换成TGPImage?
 
楼主要用Png图片, 还是要用dxPngImage来转换图片格式?如果只是使用png图片, 独立的TPngImage代码是很好用的;
 
多谢楼上各位的帮助。但还没有理解我的问题:我用BlockEngine做流程图,当用BlockEngine调入Png图片时,不支持png透明显示,想通过改代码,但GDI+不懂,所以想求人帮助。
 
这下清楚楼主的意图了, 原理上讲:我上面说的TPnImage是可以解决楼主的问题的;TPngImage实际上是扩充Delphi的图像TImage格式, 增加一个png图片格式, 使用TImage就可以读入png图片的, 而且有透明效果, 我一直在用这个, 挺好用的;
 
多谢楼上作答,我想让BlockEnegine调入PNG,能够正常显示,而不是透明部分显示为黑色。
 
你可以用GDI+直接打开PNG文件然后画到TImage上就可以了
 
后退
顶部