绘图的时候,PNG底色是黑色,为什么呢

wangwei244157887 2013-02-18 09:33:25
第一副图是用bitblt的参数为scrcopy,第二幅图bitblp的参数为scrand,出现了颜色失真,我想要画图透明的PNG图片,该怎么弄呢?如第三幅图所示,无论窗体是什么颜色




procedure TForm1.btn1Click(Sender: TObject);
var
DC,MemDC:HDC;
MemBitMap,OldBitMap:HBITMAP ;
GPGraph:TGPGraphics ;
GaugeImg:TGPImage ;
procedure DrawImage ;
begin
DC:=GetDC(Self.Handle);
MemDC :=CreateCompatibleDC(DC);
MemBitMap:=CreateCompatibleBitmap(DC,246,157);
OldBitMap :=SelectObject(MemDC,MemBitMap);
GPGraph:= TGPGraphics.Create(MemDC);
try
GaugeImg :=TGPImage.Create(WideString(ExtractFilePath(ParamStr(0))+'Images\guage.png'));
GPGraph.DrawImage(GaugeImg,0,0,GaugeImg.GetWidth,GaugeImg.GetHeight );
BitBlt(DC, 0, 0, 246, 157, MemDC, 0, 0, SRCCOPY);
finally
GaugeImg.Free ;
SelectObject(MemDC,OldBitMap);
DeleteDC(MemDC);
DeleteObject(MemBitMap);
ReleaseDC(Self.Handle,DC );
end;
end;
begin
DrawImage ;
end;
...全文
901 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
一如当初 2013-02-19
  • 打赏
  • 举报
回复

PerformEraseBackground(Self, MemDC);
「已注销」 2013-02-18
  • 打赏
  • 举报
回复
我的想法是用brush复制整块的背景图,以前看到过例子,但是现在忘记了,请大家多多指教
「已注销」 2013-02-18
  • 打赏
  • 举报
回复
现在可以了,用底色来填充了,可以消除这个黑色,但是因为我的底色是渐变的,不好用单纯一种颜色来复制,要把整块图形作为底色,才能解决这个问题,该怎么做呢
山东蓝鸟贵薪 2013-02-18
  • 打赏
  • 举报
回复
我有实例的, 但是今天不能给你了 明天再分享给你吧 我明天才正式上班的

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧