求一较快的算法 (200分)

  • 主题发起人 主题发起人 yykk521
  • 开始时间 开始时间
Y

yykk521

Unregistered / Unconfirmed
GUEST, unregistred user!
//一幅图片经过缩小旋转平移之后覆盖部分旧图片,形成新的图片 求解。。。
以前没说清楚 现在补充一下
一幅自己画的图片 背景为黑色 黑色上有以红色的圆(半径随意) 图片大小为409*409
对红色部分作如下四种变换 w1: x:=trunc(0.6*x0+74);y:=trunc(0.6*y0+147);(x,y为变换后的坐标 x0,y0为变换前的某一红色象素点的坐标)
w2: x:=trunc(0.6*x0+74);
y:=trunc(0.6*y0+49);
w3: x:=trunc(0.4*x0+0.3*y0+110);
y:=trunc(0.4*y0-0.3*x0+147);
w4: x:=trunc(0.4*x0-0.3*y0+110);
y:=trunc(0.4*y0+0.3*x0+37);
这样红的部分就变成四个相似的部分了 覆盖源红色部分
这样迭代n次 只要最后一次所得到的图形
我是用象素操作的 这样计算到十次差不多要43秒 再加上绘点就死机了 一个字 慢
求一比较快的思路
 
在delphi的component/Input ActiveX/ 中有一组Kodak 的控件可以解决你的问题
 
我把他顶上去
 
没有看懂意思,是不是先stretchblt出一幅缩小的图片,然后将此图片旋转一个角度,
再 bitblt回去?
 
另有一小问题 作了一个串口通讯的程序 向封装起来用vc或者vb调用 怎么做比较好
可另开贴给分
 
浮点计算是比较费时的,先这么改试试:
x:=x0 * 3 div 5 +74);y:=y0 * 3 div 5 +147);
其它也做类似改动。
 
还有什么好的办法吗 我测了一下 计算坐标不怎么耗时 画点时间倒是比较长
我是用bitmap.Canvas.Pixels[t1.x,t1.y]:=clred;画的 这应该是最慢的了吧 555555555
 
bitmap其实数据是个二潍数组。你通过计算的出二潍数组的值,修改后直接显示应该比较快吧,我只是知道好象这样是可以,具体没做过:)
你试下 ,成功后,最好吧CODE贴上来:)
 
to cyf_00002 我就是先算然后绘点 按象素绘点很慢的阿
 
后退
顶部