正确使用StretchBlt模式来改善缩放位图的性能

前段时间研究位图的放大,对StretchBlt的模式做了分析,其中主要比较的是默认模式和清晰度比较高的HALFTONE模式。

为了进行图形缩放的时候得到质量较高的图形,HALFTONE模式被采用,但HALFTONE模式是将源矩形区中的像素映射到目标矩形区的像素块中,覆盖目标像素块的一般颜色与源像素的颜色接近,因此其运算量比较大,而且在设置为该模式以后需要设置刷子的源点。

下面对使用默认模式和HALFTONE模式进行一个测试得到数据,测试图形大小为:507*612

放大两倍的测量如数:

StretchBlt Mode

Time(ms)

Picture Quality

1

2

3

AVG

HALFTONE

25.3

25.4

25.7

25.5

HIGH

DEFAULT

3.1

3.1

3.1

3.1

HIGH

两个时间比为:AVG1/AVG2 = 25.5/3.1 = 8.22

缩小两倍的测量数据为:

StretchBlt Mode

Time(ms)

Picture Quality

1

2

3

AVG

HALFTONE

10.492

10.531

10.468

10.497

HIGH

DEFAULT

1.495

1.457

1.477

1.48

LOW

两个时间比为:AVG1/AVG2 =10.497/1.48 = 7.1

我们可以看到使用HALFTONE进行缩放图形所使用的时间大约是默认模式的78倍之多,但在进行放大的时候得到的图形质量基本上没有什么区别,但在缩小的时候就有明显的区别,所以为了提高程序的性能,可以在放大的时候考虑不使用HALFTONE模式,而在缩小的时候使用HALFTONE模式,这样可以保证我们的程序跑的更快。

注意一个问题:这里没有对图形进行无限的放大测量,如果放大到10倍以上图形质量时候会影响还需要注意。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值