社区
C++ Builder
帖子详情
在pmXor模式下怎样才能得到想要的颜色?
GeoPhoenix
2004-08-22 10:53:07
在Canvas上划线,使用pmXor模式如何才能得到想要的颜色?代码大致如下
Canvas-Pen->Mode = pmXor;
Canvas-Pen->Coloe = ????; //这里如何设置,假如我想最终画出来的线条为clBlue
Canvas->MoveTo(0,0);
Canvas->LineTo(100,100);
...全文
94
5
打赏
收藏
在pmXor模式下怎样才能得到想要的颜色?
在Canvas上划线,使用pmXor模式如何才能得到想要的颜色?代码大致如下 Canvas-Pen->Mode = pmXor; Canvas-Pen->Coloe = ????; //这里如何设置,假如我想最终画出来的线条为clBlue Canvas->MoveTo(0,0); Canvas->LineTo(100,100);
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jiangchun_xn
2004-09-05
打赏
举报
回复
奇怪了,既然你要xor的方式绘图。为什么还要???
GeoPhoenix
2004-09-05
打赏
举报
回复
诸位帮帮忙啊
GeoPhoenix
2004-09-05
打赏
举报
回复
我想xor的结果为我指定的颜色,比如我想最后的颜色是红色的(大部分)在蓝色背景上或其他颜色的背景上该按照一个什么样的标准来设定?
constantine
2004-08-24
打赏
举报
回复
这个跟背景有关
GeoPhoenix
2004-08-24
打赏
举报
回复
怎么没人理啊?
rvsystemmoveto_rvsystem_
RvSystem1->BaseReport->Canvas->Brush->Style= psSolid; RvSystem1->BaseReport->Canvas->Pen->Style = psSolid; //Canvas->Pen->Mode =
pm
Xor
; TPenMode
pm
Mode = Canvas->Pen->Mode; Canvas->Pen->Mode = 2; RvSystem1->BaseReport->Canvas->Pen->Color = clRed; RvSystem1->BaseReport->Canvas->Pen->Width = 7;
delphi hook 抓屏
var intPos,intX,intY: longint; begin intPos := message.lParam; intX := Trunc(intPos/10000); intY := (intPos mod 10000); if not CutRange.MouseIsDown then begin if not ((intX>Left) and (intX
Top) and (intY
pmCopy); end; if CutRange.MouseIsDown then begin uDrawLine(intX,intY,
pm
Xor
); end; end; alPolyLine: //礶ヴ種Ρ絬 begin if message.WParam = WM_LBUTTONDOWN then begin CutRange.StartPoint.X := intX; CutRange.StartPoint.Y := intY; CutRange.MouseIsDown := True; end else if message.WParam = WM_LBUTTONUP then begin CutRange.EndPoint.X := intX; CutRange.EndPoint.Y := intY; CutRange.MouseIsDown := False; uDrawPolyLine(intX,intY); end; if CutRange.MouseIsDown then begin uDrawPolyLine(intX,intY); end; end; alRang: //礶痻 begin if message.WParam = WM_LBUTTONDOWN then begin CutRange.StartPoint.X := intX; CutRange.StartPoint.Y := intY; CutRange.EndPoint.X := intX; CutRange.EndPoint.Y := intY; CutRange.MouseIsDown := True; end else if message.WParam = WM_LBUTTONUP then begin CutRange.EndPoint.X := intX; CutRange.EndPoint.Y := intY; CutRange.MouseIsDown := False; uDrawRang(intX,intY,
pm
Copy); end; if CutRange.MouseIsDown then begin uDrawRang(intX,intY,
pm
Xor
); end; end; alRangC: //礶蛾à痻 begin if message.WParam = WM_LBUTTONDOWN then begin CutRange.StartPoint.X := intX; CutRange.StartPoint.Y := intY; CutRange.EndPoint.X := intX; CutRange.EndPoint.Y := intY; CutRange.MouseIsDown := True; end else if message.WParam = WM_LBUTTONUP then begin CutRange.EndPoint.X := intX; CutRange.EndPoint.Y := intY; CutRange.MouseIsDown := False; uDrawRangC(intX,intY,
pm
Copy); end; if CutRange.MouseIsDown then begin uDrawRangC(intX,intY,
pm
Xor
); end; end; alRoud: //礶蛾 begin if message.WParam = WM_LBUTTONDOWN then begin CutRange.StartPoint.X := intX; CutRange.StartPoint.Y := intY; CutRange.EndPoint.X := intX; CutRange.EndPoint.Y := intY; CutRange.MouseIsDown := True; end else if message.WParam = WM_LBUTTONUP then begin CutRange.EndPoint.X := intX; CutRange.EndPoint.Y := intY; CutRange.MouseIsDown := False; uDrawRoud(intX,intY,
pm
Copy); end; if CutRange.MouseIsDown then begin uDrawRoud(intX,intY,
pm
Xor
); end; end; alText: //糶ゅ begin if message.WParam = WM_LBUTTONDOWN then begin if TextFormHan<=0 then begin SendMessage(CutRangeFormHan,WM_CLOSE,0,0); CutRangeFormHan := 0; TextForm := TTextForm.Create(nil); TextFormHan := TextForm.Handle; TextForm.Left := intX; TextForm.Top := intY; CutRange.StartPoint.X := intX; CutRange.StartPoint.Y := intY; TextForm.Show; btnText.Down := False; end else begin if (intX
TextForm.Left+TextForm.Width) or (intY>TextForm.Top+TextForm.Height) then begin SendMessage(TextFormHan,MSG_SANWRITETEXT,100,0); // SendMessage(TextFormHan,WM_CLOSE,0,0); TextFormHan :=0; uUnWinHook; // CutRange.EndPoint.X := intX; // CutRange.EndPoint.Y := intY; CutRange.MouseIsDown := False; CurAction := alNone; end; end; end else if message.WParam = WM_LBUTTONUP then begin end; //MoveWindow(TextFormHan,intX,intY,1,1,True); end; end; end;
画笔的异或
模式
画笔的异或
模式
(pen.mode:=
pm
Xor
) 将当前要绘制区域的
颜色
与画笔的
颜色
进行异或运算
得到
实际绘制时的
颜色
,由于黑色的
颜色
值是0,所以黑色与X
颜色
异或
得到
的是X
颜色
,这也是为什么在异或
模式
下,用黑色绘制看不到结果,用X
颜色
绘制画出来却不是X
颜色
的原因(在不是以黑色为背景的地方绘制)。 用画笔的异或
模式
擦除线条的方式:在异或
模式
下用同种
颜色
在原来画线的地方重绘就可以消除。原
delphi canvas 属性知识
Delphi 画布对象 CanvasDelphi具有图形、图像处理能力,可在组件或窗体中绘制各种图形。Canvas 是TCanvas类的一个系统定义对象,称为画布对象,通常作为其他组件的一个属性出现,不会被单独使用。每一个TControl的派生类都有Canvas的属性。例如Form的Canvas属性可在窗体的客户区域绘图。由于Canvas是运行时的属性,在程序执行时才能获得,所以必须通过编写程序来完成设置。canvas的主要属性有Pen(画笔)、Brush(画刷)、pixels(像素)、penpos(画笔的
Delphi 的绘图功能[11] - TPen 类(上)
//TPen 的主要属性有四: Color、Width、Style、Mode {Color:
颜色
} {Width: 宽度; 默认是 1; 如果赋予 <= 0 的值, 会使用默认值} {Style: 样式; Delphi 定义了笔样式枚举 TPenStyle, 包含以下样式:} psSolid = 0; {实线} psDash = 1; {...
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章