缩小TBitmap(25分)

  • 主题发起人 主题发起人 szchengyu
  • 开始时间 开始时间
S

szchengyu

Unregistered / Unconfirmed
GUEST, unregistred user!
用Canvas.CopyRect 缩小一个TBitmap的内容,为什么颜色会失真,怎么解决,
用TImage就不会出现。
急哪???????????????

另外,还请问Canvas.CopyRect方法一次拷贝TBitmap最大容量是多少
不好意思,实在拿不出手,只有这么点分了
 
建议你还是用StretchBlt来进行缩放。

SetStretchBltMode(DstBmp.Canvas.Handle,HALFTONE);
StretchBlt(DstBmp.Canvas.Handle,0,0,DstBmp.Width,DstBmp.Height,
SrcBmp.Canvas.Handle,0,0,SrcBmp.Width,SrcBmp.Height,SRCCOPY);
 
看看下面的代码!我觉得关键可能是你没有指定采用相同色深的缘故!
当然也不排除在缩放过程中的失真,那就可能和Tbitmap代码自身有关。

Var B:Tbitmap;
Begin
B:=Tbitmap.Create; //建立临时位图
。。。
B.Assign(YourBitmap); //采用相同色彩深度
。。。 //指定缩放后的大小
B.canvas.StretchDraw(B.canvas.Cliprect,YourBitmap); //进行缩放
B.SavetoFile(YourFileName); //保存缩放后的文件
。。。
B.Free; //释放临时位图

Canvas.CopyRect方法一次拷贝TBitmap最大容量是多少??? 常规方法的不清楚。好像很脆弱!
但改进以后的算法可以创建2G以上大小的Bitmap!
 
谢谢tyn,问题解决了

to YB_unique:
如何改进??
 

Similar threads

后退
顶部