C# 在picturebox画线,画矩形,当需要擦除其中某一条曲线的时候怎么做?用异或画笔??这方面了解比较少,求大神。。。

问题描述

C#在picturebox画线,画矩形,当需要擦除其中某一条曲线的时候怎么做?用异或画笔??这方面了解比较少,求大神。。。

解决方案

解决方案二:
这个,你只能做层,PS软件都没办法做到这点除了用图层,我想不到其他办法
解决方案三:
自己做图层List<Image>
解决方案四:
请问有没有图层的具体的例子?
解决方案五:
引用2楼crystal_lz的回复:

自己做图层List<Image>

请问有没有图层的具体的例子,这个list里面存放的是图片还是坐标点?
解决方案六:
可以用底色重画橡皮经过的区域
解决方案七:
橡皮可以实际是一个和底色相同颜色的画笔,重画要修改的区域
解决方案八:
所谓“画”,就是在重绘事件中DrawLine,重绘发生时,首先会响应擦除,再绘图。用windows消息分析,也就是这个顺序:WM_ERASEBACKGROUNDWM_PAINT所以画线应当在paint的响应事件中进行,每次窗体或控件都要执行这个事件,并没有持久的绘图。当窗体刷新时(比如从最小化恢复,或者你强制使它Refresh),首先会擦除已有的绘图,然后再画上去。定义一个lines的坐标数组,当响应paint事件时,按照预定的坐标DrawLine,而当你不想画某条线时,把它从数组中移除就是了。
解决方案九:
看楼上这么多说法,我想起来windows3.1的画图橡皮是可以单独擦掉颜色的。但到windows95之后就取消了这个功能。
解决方案十:
同样是使用.net最基本的开发工具,当人家讨论时,你还在纠结底层的什么“擦除一跟简单直线”。别用winform,别纠结什么gdi+。用高级的编程方式!
解决方案十一:
计算机图形学,只是让你打好基础,这样你就能有信心、有勇气去使用比较高级的开发平台,遇到问题也能想象出内部的机制。你可以花1个月时间去纠结什么“擦除picturebox上面的直线”算法,但是要很快扔掉这些东西。你应该学习wpf,然后再它的基础上设计你的比较实用的上图软件。不要把青春都浪费在底层。
解决方案十二:
引用9楼sp1234的回复:

同样是使用.net最基本的开发工具,当人家讨论时,你还在纠结底层的什么“擦除一跟简单直线”。别用winform,别纠结什么gdi+。用高级的编程方式!

wpf内存占用较高,一般平面绘图程序建议用Direct2D处理,内存占用上优于wpf太多。需要特殊变换(旋转、翻转、渐变、闪烁等动态效果)的时候,用wpf的优势就比Direct2D好太多。选择合适的框架也是计划开发的一个部分,当然你要能驾驭框架,否则乖乖选择自己能用的是正确选择,比如楼主现在的问题,开启双缓冲可以减少闪烁,但并不能解决。去互联网找winfrom的增强窗体控件可以解决部分问题,比如cskin之流。
解决方案十三:
楼主的问题是再问“双缓冲”?怎么想的?楼主是在问“图层框架怎么搭建?”之类的问题。在编程中,回答就是一句话“把那根曲线对象从图层中删除掉,自然界面上就看不见了”。搞清楚应该把时间用在什么开发平台,有利于自身发展。
解决方案十四:
楼主的问题,是在问“假设有成百上千个复杂的图形组件,怎么能够方便地编程?”的问题。他问的问题其实非常简单,但是不是抠什么“双缓冲能不能解决”的问题,而是一个简单的大问题。把复杂问题搞得简单、让人用半年时间就能研发一个上图系统,是造福。把简单问题搞得特别复杂,让人用5年时间,连个上图系统的底层基础都还没有纠结完毕,就很不好了。毕竟,我们不是给人家开发底层驱动软件的,我们是搞高层次应用软件的。
解决方案十五:
异或画笔只在C、C++才有,C#中要使用异或画笔,需调用API你可以把每个画出的线条、形状(鼠标轨迹)连同画笔、画刷保存到对象中在Paint事件发生时,有选择的重新画出(不画的就是删掉了)人家正在学习GDI+,非要让他不要学而改学其他,这是不厚道的。怎么就知道他以后的课程里就没有WPF呢?
解决方案:
如果花钱去学习GDI+是一回事儿(这时候基本上符合“在家玩儿”的状态),如果自己研发一个上图软件是另一回事儿。.net基础中有专业的图形开发工具,这个知识要启蒙时就知道。比如说你只需要在web页面上显示比较酷和流畅的图形界面,你现在肯定就不能纠结于WPF。这是同样的道理,什么实用就用什么。
解决方案:
引用楼主shaobo1203的回复:

C#在picturebox画线,画矩形,当需要擦除其中某一条曲线.........

通常这并非是“画曲线、画矩形”,而是要搭建一个实用的软件。然而,你看那些只给你底层例子的博客作者,有几个是假设你是要在短期研发一个实用的上图软件呢?基本上都是假设你只是玩一玩儿底层。因此那些博客实际上不能多花时间,而应该尽快跳过。
解决方案:
引入图层的概念不复杂。复杂的是细节。比如用list<bitmap>就可以实现图层一个图层是一个bitmap然后把这些层按顺序画出来就是最后的图片。你选择你画线的图层重置为透明色即可。当然list<bitmap>肯定不能满足所有需求可以自己拓展加写属性比如图层隐藏显示等而ps里的撤销本人觉得是每画一个东西。都新建了一个bitmap。然后可以实现撤销。我说的只是一种思路。实现起来还是挺麻烦的。

时间: 2024-11-01 18:30:06

C# 在picturebox画线,画矩形,当需要擦除其中某一条曲线的时候怎么做?用异或画笔??这方面了解比较少,求大神。。。的相关文章

java 截图-关于java截图画线的问题 求大神帮忙

问题描述 关于java截图画线的问题 求大神帮忙 import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionListener

电路图 备用电源-备用电源电路图,第一次画电路图,求大神帮我看看哪里有不足。

问题描述 备用电源电路图,第一次画电路图,求大神帮我看看哪里有不足. 先说说我的思路,外部电源电压为12V,输入电压和电池电压通过LM339做一个比较,当蓄电池电压低于11V的时候,LM339输出低电压,PMOS导通,电池开始充电.电压大于11的时候Pmos截止不再充电.因为锂电池的最高充电电压低于外部电路电压,所以平时不会放电. 蓄电池是用12V锂电池,锂电池已经自带过载,过充的保护电路板. 因为我的使用环境可能需要保证10年以上的不损坏,平时停电的机会也很小,所以我想尽量减少理电池的充电放电

画出流程图,并写出程序,求大神解答!

问题描述 画出流程图,并写出程序,求大神解答! 有一组无符号字节数据,从存储单元DATTA开始存放,数组的长度存放在存储单元SIZE中.试编写一个程序求他们的平均值(保留整数部分),并放在SIZE单元的后面. 要求:画出流程图,并写出程序,求大神解答,谢谢! 解决方案 程序我有,正好是我们的微机作业.但是为了防止别人抄袭我的答案,请先采纳我的回答,我才能发给你. 解决方案二: 作业题 解决方案三: 程序我有,正好是我们的微机作业.但是为了防止别人抄袭我的答案,请先采纳我的回答,我才能发给你.

一行放两个按钮-安卓新手页面画不出来,求大神指教

问题描述 安卓新手页面画不出来,求大神指教 我想知道安卓有没有像java中的div一样的东西我在画页面,用的表格布局,有一列要放两个按钮,可是不知道怎么弄,因为是新手,也不太懂,我画出来的样子:可是我需要的是这个样子:只要把那两个按钮放一起就可以了.那一行我的代码: android:id=""@+id/send_notice_content"" android:layout_width=""wrap_content"" and

c# 4 0-c#求大神指教,关于递归排产线产品生产量的问题

问题描述 c#求大神指教,关于递归排产线产品生产量的问题 已知生产数量A,每日最大生产值B,客户需要产品到货时间 向数据库添加数据时候需要主意以下几点 1.生产完成时间尽量往后(既是距离到货时间前两天即可) 2.日最大产量不能大于每日最大生产值(200) 3.生产日期从当前时间开始往后排 4.日最大生产量必须要满足(既是每天必须生产200) eg:需要生产500个产品,日最大产值200,客户需要2014-12-20收到产品(客需要到货时间可以协调) 1.生产完成日:2014-12-17 开始生产

波形图-关于画动态波形的问题、求大神说说你们实现的好办法。

问题描述 关于画动态波形的问题.求大神说说你们实现的好办法. 我现在在做一个关于医疗的APP,用蓝牙从设备上得到一些我要的数据. 现在数据已经能够拿到了,现在我程序是这样的,当处理完每个数据,就会发消息 拿到我的那个数据 "msg.arg2",数据是每秒两百个,每有一个数据过来然后就执行画图的方法updateChart(msg.arg2):画图是用的第三方的jar,acharengnie: 我现在的问题就是 因为设备上的数据发送过来并不是匀速地,然后每秒数据有200个,画起来就感觉一卡

指针-opnet统计线的使用方式???求大神赐教

问题描述 opnet统计线的使用方式???求大神赐教 使用OPC_INTRPT_STAT 获取的是指针吗??统计线的使用方式???求大神赐教

图片-求大神解答,怎么画一个Android仪表盘

问题描述 求大神解答,怎么画一个Android仪表盘 求各位指点怎么画这样一个仪表盘,我之前使用过drawArc(),但是没能画出来 解决方案 圆圈很好画,至于那些刻度,你可以旋转canvas,而不用每次都计算点的坐标,这样就好弄了 解决方案二: 可以仿支付宝里的例子 解决方案三: 可以仿支付宝里的例子

求大神指导: c#怎么用鼠标选中picturebox里面的点线

问题描述 c#怎么用鼠标选中picturebox里面的点线(这些点线是我画的,画线用的是下面的代码)(我是在windows窗体中编写的程序),例如:点了一个选择按钮,这个时候就可以选中picturebox里面的点线.Graphicsg=Graphics.FromImage((Image)bmp);g.DrawLine(newPen(Color.Red,1),Pt[i],Pt[i+1]); 解决方案 解决方案二:使用wpf这样的图元编程平台.要在这么底层地方让人告诉你如何设计控件/组件,难道你要自