hBmp := CreateBitmap(201,200,1,24,nil);
bmp := TBitmap.Create;
bmp.Handle := hBmp;
bmp.Canvas.Pen.Color := clRed;
bmp.Canvas.Pen.Style := psSolid;
bmp.Canvas.MoveTo(0,0);
bmp.Canvas.LineTo(100,100);
Image1.Canvas.Draw(0,0,bmp);
结果出来的Image1就是白白的一篇.但是我把bmp.savetofile('d:\123.bmp'),用图片软件一看,居然是黑的.大家帮我看看这段代码用什么问题没有.或者给我一段CreateBitmap然后,显示出来的代码.
bmp := TBitmap.Create;
bmp.Handle := hBmp;
bmp.Canvas.Pen.Color := clRed;
bmp.Canvas.Pen.Style := psSolid;
bmp.Canvas.MoveTo(0,0);
bmp.Canvas.LineTo(100,100);
Image1.Canvas.Draw(0,0,bmp);
结果出来的Image1就是白白的一篇.但是我把bmp.savetofile('d:\123.bmp'),用图片软件一看,居然是黑的.大家帮我看看这段代码用什么问题没有.或者给我一段CreateBitmap然后,显示出来的代码.
直接用TBitmap创建就行了
begin
bmp := TBitmap.Create;
try
bmp.width:= ......;
bmp.heigth:= .....;
bmp.Canvas.Pen.Color := clRed;
bmp.Canvas.Pen.Style := psSolid;
bmp.Canvas.MoveTo(0,0);
bmp.Canvas.LineTo(100,100);
Image1.Canvas.Draw(0,0,bmp);
finally
bmp.free;
end;
因为我有一组201x200的位图数据,想把它画在一个Image1上.
CreateBitmap创建一个24bit位图,然后显示出来,不知道为什么就是不行,CreateCompatibleBitmap就是行的,但是CreatBitmap就是不行.
var
Alto, Ancho : integer;
ScreenDC, MaskDC,
SrcDC, DstDC : HDC;
BmpMono, DstBmp : HBitmap;
begin
// Este codigo dibuja el bitmap "bmp2" sobre el
// bitmap "bmp1" tomando como color trasnparente
// el color del punto más arriba más a la izquierda.
// Se asume que ambos bitmaps son de igual tamaño
Alto := bmp1.Width;
Ancho := bmp1.Height;
DstDC := bmp1.Canvas.Handle;
SrcDC := bmp2.Canvas.Handle;
// crear bitmap monocromático máscara :
ScreenDC := GetDC (0);
BmpMono := CreateBitmap (Ancho, Alto, 1, 1, nil);
MaskDC := CreateCompatibleDC (ScreenDC);
SelectObject (MaskDC, BmpMono);
SetBkColor (SrcDC , bmp2.Canvas.Pixels[1,1]);
BitBlt (MaskDC, 0, 0, Ancho, Alto, SrcDC, 0, 0, SRCCOPY); // COPY
// dibujar imagen transparente :
SetBkColor(DstDC, RGB(255, 255, 255));
SetTextColor(DstDC, RGB(0, 0, 0));
BitBlt (DstDC, 0, 0, Ancho, Alto, SrcDC, 0, 0, SRCINVERT); // XOR
BitBlt (DstDC, 0, 0, Ancho, Alto, MaskDC, 0, 0, SRCAND); // AND
BitBlt (DstDC, 0, 0, Ancho, Alto, SrcDC, 0, 0, SRCINVERT); // XOR
// liberar recursos :
DeleteDC (MaskDC);
DeleteObject (BmpMono);
ReleaseDC (0, ScreenDC);
end