草 草在墙头 Unregistered / Unconfirmed GUEST, unregistred user! 2003-05-19 #1 比如说我在(0,0,100,100)这个区域内画了一个颜色是red的Rectangle,现想用一反色将red区域冲掉。 该怎么做?
太 太阳火 Unregistered / Unconfirmed GUEST, unregistred user! 2003-05-19 #2 R:= GetRValue(color); G:= GetGValue(color); B:= GetBValue(color); NewColor:= ColorToRGB(not R, not G, not B);
R:= GetRValue(color); G:= GetGValue(color); B:= GetBValue(color); NewColor:= ColorToRGB(not R, not G, not B);
草 草在墙头 Unregistered / Unconfirmed GUEST, unregistred user! 2003-05-19 #3 to 太阳火: 我可以将反色取出,但是我执行之后并没有将原来的rect取消,而是将red替换成了反色! 我要做的操作是将rect取消!该怎么做呢?
草 草在墙头 Unregistered / Unconfirmed GUEST, unregistred user! 2003-05-19 #5 to 太阳火: 我不知你说的是什么意思,既然是颜色,那它肯定有值了,那也就是说知道它是什么颜色了,可以这么说吗?
太 太阳火 Unregistered / Unconfirmed GUEST, unregistred user! 2003-05-19 #6 你的意思是不是说,假设原来是黄色,加了个红色的矩形,现在想擦掉他,也就是再画一个 黄色的矩形覆盖它.可是如果你不知道原来是黄色,不就不行了吗.所以要先记录原来是 什么颜色.
草 草在墙头 Unregistered / Unconfirmed GUEST, unregistred user! 2003-05-19 #7 我明白你的意思了,你只得是若背景是黄色,rect是红色,想要取消rect,就在原rect位置再画一黄色的rect,是吗? 但这肯定不行的,因为如果背景是一张图片呢?
太 太阳火 Unregistered / Unconfirmed GUEST, unregistred user! 2003-05-19 #8 你既然已经把一个区域图成一种纯色了,除非你做了备份,否则怎么能够回复呢? 如果用反色去冲(RGB值相加)的话,得到的应该是白色
草 草在墙头 Unregistered / Unconfirmed GUEST, unregistred user! 2003-05-19 #10 各位大侠,在图形操作过程中你们没有碰到类似的问题吗??还是不肯指教呢? 继续等待!
太 太阳火 Unregistered / Unconfirmed GUEST, unregistred user! 2003-05-19 #11 我想用个bitmap在画红色矩形前保存(也就是用draw)那个区域的内容,恢复时在重新draw上去 这个办法很笨的
草 草在墙头 Unregistered / Unconfirmed GUEST, unregistred user! 2003-05-19 #12 您的意思是说在确定划下红色rect之前,先将这个矩形区域的象素保存下来,在需要的时候再将这些象素划到矩形区域。是吧? 呢这样做未必不是个方法,但是这种方法对于我而言由于种种原因行不同。
太 太阳火 Unregistered / Unconfirmed GUEST, unregistred user! 2003-05-19 #13 你是不是在做undo, redo之类的功能? 很多图像软件对于不可逆的操作的undo都是通过事先备份然后重新读取来实现的
太 太阳火 Unregistered / Unconfirmed GUEST, unregistred user! 2003-05-19 #15 注意因为你把某个区域的颜色变为红色,这个红色是独立于原来的颜色的,和原来的颜色没有 任何关系,所以说是不可逆操作(也就是无法用算法重新计算颜色).
草 草在墙头 Unregistered / Unconfirmed GUEST, unregistred user! 2003-05-19 #16 我不知道那样做对速度有多大的影响,因为如果我选择1024*768的区域,我就需要一个很大的数组和1024×768次循环啊!
太 太阳火 Unregistered / Unconfirmed GUEST, unregistred user! 2003-05-19 #17 不需要数组和循环呀呀,用TBitmap, 例如 MyBmp.width := 100; MyBmp.height := 100; MyBmp.canvas.draw(.....) TCanvas的draw方法的语法 procedure Draw(X, Y: Integer; Graphic: TGraphic);
不需要数组和循环呀呀,用TBitmap, 例如 MyBmp.width := 100; MyBmp.height := 100; MyBmp.canvas.draw(.....) TCanvas的draw方法的语法 procedure Draw(X, Y: Integer; Graphic: TGraphic);
草 草在墙头 Unregistered / Unconfirmed GUEST, unregistred user! 2003-05-19 #18 对于delphi来说可以,但我现在用的是C#,其中没有提供这个方法(也可能是我没有找到吧),我再来看看! 谢谢你! 明天给分!!