关于C#几个图象处理的简单问题,up者有分,分不够可以再加! (200分)

  • 主题发起人 主题发起人 草在墙头
  • 开始时间 开始时间

草在墙头

Unregistered / Unconfirmed
GUEST, unregistred user!
1、怎样画任意曲线,按下鼠标左键不放开始画图
就像在“开始/附件/画图中”选中'铅笔'后画图的效果!
2、画直线时,想然线条跟随鼠标,怎么实现?
3、怎样取颜色的反值?

注:最好能从C#角度回答,应为delphi和c#的在这方面处理不一样。

急!小弟在线等待!
分不够可以再加!up者有分!
 
大虾,你在何方?
 
有一个图象热点控件,用于GIS系统开发的,你搜一下
 
继续等待!
 
好!!谁要是能将我的问题解决,我以200+900分相送!!!
 

bitblt(hdc1,0,0,w,h,hdc2,l,t,srccopy);
hdc1保存对象句柄、hdc2图片句柄、l 鼠标lift、t 鼠标 top w 鼠标宽 h 高
 
高手,你在哪里?
等你等的我心痛!
 
这个时候,你需要捕获你的鼠标了,按下的时候,记下他的位置,
然后随着鼠标的移动,在图片上画区域,用于释放鼠标的时候,
结束这个绘图,在DELPHI里绘图都封装在TCanvas里的,很好用。
当然,你能够画出这个区域,那么保存就不是问题了。
[:)]
Use TCanvas as a drawing surface for objects that draw an image of
themselves. Standard window controls such as edit controls or list
boxes do not require a canvas, as they are drawn by the system.

TCanvas provides properties, events and methods that assist in
creating an image by

Specifying the type of brush, pen and font to use.
Drawing and filling a variety of shapes and lines.
Writing text.
Rendering graphic images.
Enabling a response to changes in the current image.
 
没问题,先给你个思路,有时间可以写个Demo给你

表1 T_Index:
Region_ID Integer ,自增量,主键
minX integer
minY integer
maxX integer
maxY integer

表2 T_Info:图片区域的相关属性,
Region_ID Integer -->指向表1 的 Region_ID
Color Char
Area double

保存数据:
在MouseDown 的时候记下鼠标的位置 P1(X1,Y1)
在MouseUp 的时候再记下鼠标的位置 P2(X2,Y2)
在表1里增加一条记录,把P1 P2 的坐标比较大小后写到 min max 里

读取属性
在MouseUp的 时候记下鼠标的位置P1(x,y)
把x,y 放到表1里去Select Region_ID from T_Index where x>= minx and x<= maxx and y>=miny and y<= maxY
得到的Region_ID 到表2里去取该区域的相关信息

OK . Finish
 
to giswang:
非常感谢!但那只是针对规则图形,对于非规则图形应该怎么处理呢?
 

你把非规则图形(多边形)保存起来,每次要读取的时候用点是否在多边形内的算法来实现
把一个区域看为一个对象
修改表 表1 T_Index:
Region_ID Integer ,自增量,主键

增加表3 T_XYS
Region_ID Integer -->指向表1 的 Region_ID
Pt_Index integer 对于每个对象,Pt_Index严格从0开始,按照多边形的顺序从起点开始,每个点一条记录,
Pt_Index递增,第一个和最后一个的X,Y 要相同
X integer
Y integer

读取属性:
在MouseUp的 时候记下鼠标的位置P1(x,y)
把x,y 放到表1/2 里去Select Region_ID
你从表2恢复出多边形,用点是否在多边形内的算法来取到对应的 Region_ID
 
后退
顶部