哪位做过PS的索套工具?
RT..
程序中要用跟PS一样的索套工具,鼠标经过后,自动判断路径的闭合区域,然后再画蚂蚁线,
再将选中区域的图像拷贝出来,
蚂蚁线比较好画,关键是如何通过鼠标经过的点,获取这块闭合区域,其实也就是不规则形状...
[解决办法]
这个真没做过
不过貌似以前有过一套较强的图形处理工具组件,有开发接口,你自已找找
[解决办法]
貌似很高级,顶
[解决办法]
纯帮顶了。
[解决办法]
可以根色取得region 吧
[解决办法]
花点时间帮你写了,主要是路径或者区域的操作
- Delphi(Pascal) code
... private FPoints: array of TPoint; FMouseDown: Boolean;...procedure TForm1.PaintBox1Paint(Sender: TObject);var Rgn: HRGN;begin with PaintBox1 do if Length(FPoints) > 0 then begin BeginPath(Canvas.Handle); Polyline(Canvas.Handle, FPoints[0], Length(FPoints)); EndPath(Canvas.Handle); //Rgn := PathToRegion(Canvas.Handle); if not FMouseDown then SelectClipPath(Canvas.Handle, RGN_COPY); Canvas.Draw(0, 0, Image1.Picture.Bitmap); Canvas.Pen.Style := psDot; StrokePath(Canvas.Handle); end else Canvas.Draw(0, 0, Image1.Picture.Bitmap);end;procedure TForm1.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin SetLength(FPoints, 0); FMouseDown := True;end;procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);begin if ssLeft in Shift then begin SetLength(FPoints, Length(FPoints) + 1); FPoints[High(FPoints)] := Point(X, Y); Refresh; end;end;procedure TForm1.PaintBox1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin FMouseDown := False; PaintBox1.Refresh;end;procedure TForm1.FormCreate(Sender: TObject);begin DoubleBuffered := True;end;
[解决办法]
应该是用canny边缘算子,查找鼠标经过点处最近的边缘。
[解决办法]
不懂,顶一下
[解决办法]
磁性套索工具一般情况下要复杂一些,简单的做法就是探索在当前指定半径范围内,对每个像素计算其和周围像素的差异,并统计出这个差异的最大值及其对应的坐标,如果这个差异大于你设定的容差,则把差异最大值对应的坐标加入到套索选区的数据结构中。
//蚂蚁线比较好画
如果你说的蚂蚁线是指和PS一样的效果的话,这句话等你到你的选取比较复杂的时候你就不会这样说了。
你会发现你的CPU使用率很高。如果你是参考codeproject上的marching ant的代码的话。
[解决办法]
可以问一下阿发伯
[解决办法]
帮顶了..
[解决办法]
帮顶了
[解决办法]
纯粹帮顶,不错
[解决办法]
路guo
[解决办法]
判断区域
[解决办法]
用过PS很多的,应该会有答案
[解决办法]
学习了!
[解决办法]
不规则区域本身是个多边形 记录首个顶点然后隔个0.2秒采样获取鼠标当前坐标加入顶点集合并且与首个顶点比较是否相距5个像素以内 是的话光标变成小圈提示用户点击 点击就能获取不规则区域的所有顶点 应该就能获取整个区域了吧。。
[解决办法]
哦,只是简单的套索工具啊,那就一点难度也没有了啊,PS中是鼠标按下确定一个顶点,哪个橡皮擦效果更不是难题了, 至于你要复制选中的图像,可以利用GDI的裁剪区域的概念,或者GDI+的。
如果要抗锯齿的话,那就要复杂一些了。
[解决办法]
Public Declare Function CreatePolygonRgn Lib "gdi32" Alias "CreatePolygonRgn" (lpPoint As POINTAPI, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
nPolyFillMode 这个东西会帮助你。
[解决办法]
学习了!支持楼主
[解决办法]
貌似很高级,顶
[解决办法]
不懂,帮顶。。。
[解决办法]
http://www.bestsales4u.com
我是电脑菜鸟,请多多指教!
[解决办法]
ding
[解决办法]
磁性套索
[解决办法]
ps我会一点啊,不过还可以啊
[解决办法]
我要说的是,这是一个灰常容易做的工具。
[解决办法]
没做过啊
[解决办法]
用过,没做过。。。。。
[解决办法]
不懂!~路过!
[解决办法]
up
[解决办法]
不懂
[解决办法]
可以找一下开源的paint.net来看一下里面是怎么实现的,它里面写的有这样的功能
[解决办法]
我不会这个 绑定一下
[解决办法]
这个真不会,期待高人吧。
[解决办法]
你可以将串口连一下试试
[解决办法]
好了,结贴
[解决办法]
期待高人出现
[解决办法]
诶有用过
[解决办法]
up
[解决办法]
等待高人
[解决办法]
[b][/b][b][/b]chdjicha zc z vHOSc ac c
[解决办法]
没做过。
[解决办法]
PHOTOSHOP用得不多, 记忆中索套应该和魔术棒是差不多的功能.
边缘判断是一个比较复杂的问题, 基于灰度或色相的判断是比较常见的做法, 在某些主体明显的图样上可以得到很好的效果.
中间还会涉及到一些数据处理技巧方面的问题, 比如路径点的重复判断, 同方向路径点压缩等. 可以极大的降低路径点的数量, 这点在创建多边形的时候会极大得提高效率, 以前作过一个类似魔术棒功能的测试下得到自动边缘检测得到的多边形定点数在加入同方向路径点压缩之后,定点数量至少可以降低一个数量级.
我设想中的"磁性"索套功能应该是:某一路径点沿着其前一点后后一点的连线的垂直方向在一定范围内分别计算该方向上像素的灰度或色差值,自动选取差值最大的点作为新点. 说是设想是因为我并没有在自己的程序中实现这个功能.
关于对选中区域图像的复制和移动楼主可以请教laviewpbt,他的程序已经有这个功能了.
[解决办法]
mark
[解决办法]
当初学PS只是看了些教程,学了些皮毛。
期待高人出现
------解决方案--------------------
这能顶啊,只有顶的分了
[解决办法]
帮丁的
[解决办法]
学习
[解决办法]
回帖是一种美德!
[解决办法]
不懂啊
[解决办法]
大家的水平很高。
[解决办法]
好,定啊!
[解决办法]
bang ding le
[解决办法]
不知道楼主说的是不是用ps里的磁性套索选区,如果是的话,那就在要选中的图形区域边缘绕一圈,但不要绕太快,快的话就会把你那些不想圈的区域也给弄上去,所以慢点,我觉得。还有就是要记得起点在哪,一般起点都有一个灰色的小正方形(那是你单击之后产生的),因为在你绕完一圈后,你要把那个套索图标的尾巴,也就是一根小线指到起点的小正方形上,如果指的正确的话,就会出现一个小圆圈,再单击一下,就可以了。这就是你要选中的区域。如果不是磁性套索的话,那我就再去取经吧。
[解决办法]
很好!纯顶了
[解决办法]
学习了,喳喳
[解决办法]
供应无线上网系列产品黑宝石,蚂蚁战车,卡黄,卡王。电视棒。。。
联系人:付先生
电话: 13560759904
QQ: 924610105
[解决办法]
看看
[解决办法]
mark...
[解决办法]
谢谢了,学习了!
[解决办法]
mark