绘图的时分,PNG底色是黑色,为什么呢
绘图的时候,PNG底色是黑色,为什么呢
第一副图是用bitblt的参数为scrcopy,第二幅图bitblp的参数为scrand,出现了颜色失真,我想要画图透明的PNG图片,该怎么弄呢?如第三幅图所示,无论窗体是什么颜色



------解决方案--------------------
第一副图是用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;
------解决方案--------------------
PerformEraseBackground(Self, MemDC);