请教关于图形的问题(50分)

  • 主题发起人 主题发起人 导航
  • 开始时间 开始时间

导航

Unregistered / Unconfirmed
GUEST, unregistred user!
请教:解释一下每个语句的含义
//Set up backgroundCanvas
backgrounddc := CreateCompatibleDC(Canvas.Handle);
bkbmp := CreateCompatibleBitmap(Canvas.Handle, ClientWidth, ClientHeight);
SelectObject(backgrounddc, bkbmp);
SelectPalette(backgrounddc, backgroundImage.Picture.Bitmap.Palette, false);
backgroundCanvas.Handle := backgrounddc;
backgroundCanvas.StretchDraw( backgroundRect, backgroundImage.Picture.Bitmap);
 
//Set up backgroundCanvas
backgrounddc := CreateCompatibleDC(Canvas.Handle); //建立一个内存兼容的DC (相当于一个画布)
bkbmp := CreateCompatibleBitmap(Canvas.Handle, ClientWidth, ClientHeight); //建立一个兼容的Bitmap
SelectObject(backgrounddc, bkbmp); //把bkbmp选进内存dc里
SelectPalette(backgrounddc, backgroundImage.Picture.Bitmap.Palette, false); //设置调 色板
backgroundCanvas.Handle := backgrounddc; //这句不用说了吧,BackGroundCanvas.Handle也是一个内存dc,只不过是用backgrounddc替换了他,使下面哪一句缩放到BackGrounddc,
backgroundCanvas.StretchDraw( backgroundRect, backgroundImage.Picture.Bitmap);

真的是麻烦上面的程序用得着哪样写吗?
直接用下面这一句就可以搞定的
调色板应该是由BackGroundCanvas自动识别就行了哈
backgroundCanvas.StretchDraw(backgroundRect, backgroundImage.Picture.Bitmap);
 
同意楼上的,但是有些地方画图还是要用DC的
 
如果要用dc可以这样用三
毕竟TCanvas已经封装了CreateCompatibleDC这些,


canvas: TCanvas;
hdc1: HDC;
canvas := TCanvas.Create;
canvas.Handle := GetDC(Panel.Handle);
Canvas.TextOut(10,10,'哈');
Canvas.StretchDraw(.......);
hdc1 := Canvas.Handle;
Canvas.Handle := 0;
Canvas.Free;
ReleaseDC(Panel.Handle, hdc1);
 
后退
顶部