用VB实现BMP JPG GiF 等图片转换成CAD的DwG文件
恭喜大家鼠年快乐,赚鼠不尽钞票啊。
哈哈现在基本实现了。2008年新年到了。看看下面几张图片。看完下面的图片我想你应该知道我是怎么弄出来的吧。
原图
黑色图片
降低分辨率后的图
在CAD绘制出点阵图
取得边界点
绘制出边界线
从左上角开始。每一行,如果点像素超过某个RGB值,记录下来放到P1中,继续查找,直到某个像素值淡到一定的RGB值停,记录点P2 绘制直线P1P2。继续往下扫描。
设置picture1的AutoRedraw为True;
接着设置ScaleMode为3;
再用PictureBox加载你的黑白图;
然后Lum=Point(X,Y),获得坐标(X,Y)这个像素的RGB颜色;
再提取R,G,B出来,
r = Lum Mod 256
g = (Lum Mod 65536) / 256
B = (Lum Mod 16777216) / 65536
接着设置ScaleMode为3;
再用PictureBox加载你的黑白图;
然后Lum=Point(X,Y),获得坐标(X,Y)这个像素的RGB颜色;
再提取R,G,B出来,
r = Lum Mod 256
g = (Lum Mod 65536) / 256
B = (Lum Mod 16777216) / 65536
我的得到的是一个 long值,其实将这个值转换成十六进制的值,那么他的前两为就是red,中间就是green,后面两位就是blue。
Picture1为存放源图片的控件,Picture2为转换后的目标控件.
Dim red As Integer
Dim green As Integer
Dim blue As Integer
Dim c As Long
Dim graycolor As Long
Dim x0 As Integer
Dim y0 As Integer
For x0 = 0 To Picture1.Width
For y0 = 0 To Picture1.Height
c = Picture1.Point(x0, y0)
red = (c And &HFF)
green = (c And 62580) / 256
blue = (c And &HFF00) / 65536
graycolor = (red + green + blue) / 3
Picture2.PSet (x0, y0), RGB(graycolor, graycolor, graycolor)
DoEvents
Next
Next
Dim red As Integer
Dim green As Integer
Dim blue As Integer
Dim c As Long
Dim graycolor As Long
Dim x0 As Integer
Dim y0 As Integer
For x0 = 0 To Picture1.Width
For y0 = 0 To Picture1.Height
c = Picture1.Point(x0, y0)
red = (c And &HFF)
green = (c And 62580) / 256
blue = (c And &HFF00) / 65536
graycolor = (red + green + blue) / 3
Picture2.PSet (x0, y0), RGB(graycolor, graycolor, graycolor)
DoEvents
Next
Next
已经初步完成:
下面是刚画的图:
其实我也知道,已经有很多这样的软件了,大多是国外的。我用过几个,他们的缺点一是不能转换的比较像一个图型,二是转换后的可编辑性小。当然第一个同样可能满足不了。但是再第二点上我想我还是应该能做到的。
还有个问题就是数据文件的建立和读取,一开始我是使用顺序文件的读写,感觉不好,在读取的过程中老出现错误。不如用二进制文件读写。
下面是的签名转换。
[本日志由 田草 于 2008-01-29 08:52 PM 编辑]
|
tiancao1001 于 2008-12-30 05:06 PM 发表评论:
可以QQ:交流327750885
zcmjw 于 2008-12-30 04:37 PM 发表评论:
再剖:结果如何再导入CAD 软件中?
tiancao1001 于 2008-12-29 04:47 PM 发表评论:
在田草工具箱源文件中,可以找到
zcmjw 于 2008-12-29 01:07 PM 发表评论:
转换结果导出并保存TXT文件,如何再导入CAD 软件中????
谢谢!!!!!
田草 于 2008-01-19 09:48 AM 发表评论:
wzsuda 于 2007-07-17 09:24 AM 发表评论:
田草 于 2007-07-11 09:40 PM 发表评论:
发表评论 - 不要忘了输入验证码哦! |