中易网

delphi Pen.Mode :=pmNotXor

答案:2  悬赏:50  
解决时间 2021-03-24 11:02
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if Drawing then
begin
DrawShape(Origin, MovePt, pmNotXor);
MovePt := Point(X, Y);
DrawShape(Origin, MovePt, pmNotXor); end;
-----
procedure TForm1.DrawShape(TopLeft, BottomRight: TPoint; AMode: TPenMode);
begin
Drawing:=true;
Image1.Canvas.Pen.Mode := AMode; //使上次绘制的图形颜色变成了屏幕颜色,从而达到“橡皮擦”的效果。
case DrawingTool of
dtLine:
begin
Image1.Canvas.MoveTo(TopLeft.X, TopLeft.Y);
Image1.Canvas.LineTo(BottomRight.X, BottomRight.Y);
end;
------
画图程序的用意是每次擦除上一次画的线
但每次调用都要先运行到Image1.Canvas.Pen.Mode := AMode 那不是把所画的线设为屏幕色了,不时应该什么线都画不出来啊?谢谢高手指点下!
最佳答案
pmNotXor表示用当前色与背景色进行异或处理,不是得到黑色。

pen.color与背景色异或处理一次后,后得画线的颜色,可以执行正常画线操作;

再用pen.color与原来画线的部分进行异或处理,将消除pen.color得到背景色,执行画线操作后,相当于抹掉了原来划的线,从而达到橡皮擦”的效果。

简单总结,就是:一次异或画线,两次异或为清除。
全部回答
image容器的parent属性的doublebuffered属性设true
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
中国干洗店十大品牌排行榜
西安复古婚纱照都有哪些风格?都有什么特点?
重庆大足县的龙水到璧山县有多少公里
山东省菏泽市天气预报,明日
简约8平米儿童房装修预算是多少
佳能单反相机。6D和7Dii,都配备小白镜头,那
求一款3000-4000块钱左右的女生用笔记本,不
graham blvd是谁 有大神知道吗
沉香化气片饭前吃好还是饭后吃好
天天转呼啦圈对身体有害吗
办理韩国签证需要预约么?
做什么事都要端正目标,才能有的放矢.改病句
手机开机就不能七天无理退货吗
乌雪特乡农牧民文化技术学校图书室地址在什么
为什么小孩长期流清鼻涕?
推荐资讯
请问··山东省青岛市启明星学校·10年录取线
早点摊上草帽金丝饼怎么做
压力容器的运行中常见事故的原因是什么?
丰田霸道中东全系都有后挂备胎吗
求救!那位大侠知道我的小狗狗得的什么皮肤病
{1.2}是Z的子集吗? {0}属于{0.1}吗?
现在很多的小食品 经常吃行么
在苹果专卖店能否买到翻新机
温度为37摄氏度时,1mol的氮气和1g的氢气各具
家庭装修壁纸分类介绍
总公司给分公司的是不是做一笔 借:银行、现
南席镇第四小学地址在什么地方,我要处理点事
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?