ImageEnView掩码Bug问题!(50分)

  • 主题发起人 主题发起人 prtmon
  • 开始时间 开始时间
P

prtmon

Unregistered / Unconfirmed
GUEST, unregistred user!
ImageEn控件,我在ImageEnView里设置一个黑白二色的掩码图层,假定图层坐标:
PosX:=50;
PosY:=50;
Width:=200;
Height:=200;
那么此掩码对应绑定图层显示区域按照道理是只能显示在此掩码图层的区域内的,但现在发现在对应绑定图层中调入相片后,相片实际显示出来的坐标会有几个相素的偏差,当调入1张16x16的图再放大很多倍时,此现象尤其明显。不知是何原因,请大家教教,怎样才能修正此问题,在源码中找掩码图层的算法也没找到。
 
源码这里好像有问题的,他是按原始图片大小计算需要显示的区域,这样当存在缩放时,此区域的坐标与缩放倍数相x后,宽度及高度就存在误差了。
zx:=(layer.Width/layer.Bitmap.Width);
zy:=(layer.Height/layer.Bitmap.Height);
rx:=(layerMask.Width/layerMask.Bitmap.Width);
ry:=(layerMask.Height/layerMask.Bitmap.Height);
armx:=nil;
getmem(mxarr,sizeof(integer)*aw);
for j:=0 to aw-1do
mxarr[j]:=round((j*zx/rx-layerMask.PosX/rx)+layer.PosX/rx);
 
后退
顶部