请问 为什么画出的线是黑色的?谢谢。(代码贱内)

dogdotnet 2005-10-24 11:41:43
procedure TForm1.Button3Click(Sender: TObject);
var hdcMem:hdc;
hPen,hOldPen,BitMap,bmpMemOld:dword;
begin
hdcMem:=CreateCompatibleDC(self.Canvas.Handle);
BitMap:=CreateCompatibleBitmap(hdcMem,100,200);
bmpMemOld:=SelectObject(hdcMem,Bitmap);
hPen:=CreatePen(PS_SOLID, 1, RGB(255, 222, 0));
hOldPen:=SelectObject(hdcMem, hPen);
windows.Rectangle(hdcMem,1,1,100,50);//Memframe);
LineTo(hdcMem,100,10);
LineTo(hdcMem,10,10);
SelectObject(hdcMem, hOldPen);
Bitblt(self.Canvas.Handle,1,1,100,100,hdcMem,0,0,SRCCOPY);
end;
...全文
217 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jackhatedance 2005-11-04
  • 打赏
  • 举报
回复
如果我没记错的话,CreateCompatibleBitmap这玩意默认是单色位图,要彩色得曲折一点,所以,何必呢?

我觉得直接用timage控件不是更好么?

Canvas.Pen.Color := clRed;
image1.Canvas.LineTo(100,100);
搞那么多SelectObject令我想起多年前学vc的时候,没有OO类库的时候只好用win32api
S.F. 2005-11-02
  • 打赏
  • 举报
回复
回复人:chijingde(AD) ( ) 信誉:358 2005-11-02 11:02:00 得分:0
?
yanlls(拒绝日货(美女除外))是对的
BitMap:=CreateCompatibleBitmap(Canvas.Handle ,100,200);

mxd6819318(安琪儿)和baiduan(小安子)没看清楚代码就回答,改打PP
/////////////////////////

性欲强,就是强
chijingde 2005-11-02
  • 打赏
  • 举报
回复
yanlls(拒绝日货(美女除外))是对的

BitMap:=CreateCompatibleBitmap(Canvas.Handle ,100,200);


mxd6819318(安琪儿)和baiduan(小安子)没看清楚代码就回答,改打PP

熊孩子开学喽 2005-11-02
  • 打赏
  • 举报
回复
“代码贱内”,哈哈,楼主真幽默
yanlls 2005-10-29
  • 打赏
  • 举报
回复
源程序是在内存中作图,然后在复制到窗口
yanlls 2005-10-29
  • 打赏
  • 举报
回复
楼上两位的说法有问题
mxd6819318 2005-10-29
  • 打赏
  • 举报
回复
to:baiduan(小安子)
呵呵,我就是女的呀,不用改名字了
如果有空的话,请教您个问题,在问题列表中有:《图像校正中遇到的问题,请大家帮忙》
baiduan 2005-10-28
  • 打赏
  • 举报
回复
是啊,安琪儿说得对,Delphi对color的默认值就是黑的。
安琪儿:
改个名字吧,女里女气的。
mxd6819318 2005-10-28
  • 打赏
  • 举报
回复
你没有设置画笔的颜色啊,系统默认的就是黑色
image.canvas.pen.color:=clred;
yanlls 2005-10-26
  • 打赏
  • 举报
回复
MSDN上是这么说的
Note: When a memory device context is created, it initially has a 1-by-1 monochrome bitmap selected into it. If this memory device context is used in CreateCompatibleBitmap, the bitmap that is created is a monochrome bitmap. To create a color bitmap, use the hDC that was used to create the memory device context, as shown in the following code:

HDC memDC = CreateCompatibleDC ( hDC );
HBITMAP memBM = CreateCompatibleBitmap ( hDC );
SelectObject ( memDC, memBM );
所以CreateCompaibleBitmap时候传的hDC参数应该是一个彩色DC(不是刚创建的哪个)的hDC才可以

BitMap:=CreateCompatibleBitmap(self.Canvas.Handle ,100,200);

1,183

社区成员

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

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