迅雷Bolt库中的图像拉伸的效果锯齿比较严重,常见的导致锯齿的情况:

1、在使用ImageObject时,drawmode为1拉伸模式下;

2、使用Bitmap类的Stretch函数拉伸图像;

虽然ImageObject有antialias属性支持反走样,不过设置后没有特别明显的优化效果。

解决锯齿的办法就是用C++编写拉伸函数,大家在处理时可以参考我写的处理函数:

  1. int CXLuaCImpl::StretchBitmap(lua_State* luaState)
  2. {
  3. XL_BITMAP_HANDLE hXLBitmap = NULL;
  4. if (XLUE_CheckBitmap(luaState, 2, &hXLBitmap))
  5. {
  6. int nWidth = lua_tointeger(luaState,3);
  7. int nHeight = lua_tointeger(luaState,4);
  8.  
  9. CImage oldImage;
  10. CImage newImage;
  11.  
  12. HBITMAP hBitmap = TransparentImage(XLGP_ConvertXLBitmapToDIB(hXLBitmap, 32));
  13. oldImage.Attach(hBitmap);
  14.  
  15. if(!newImage.CreateEx(nWidth, nHeight, 24, BI_RGB))
  16. {
  17. oldImage.Detach();
  18. return 0;
  19. }
  20.  
  21. int nPreMode = ::SetStretchBltMode(newImage.GetDC(), HALFTONE);
  22. newImage.ReleaseDC();
  23. oldImage.Draw(newImage.GetDC(), 0, 0, nWidth, nHeight, 0, 0, oldImage.GetWidth(), oldImage.GetHeight());
  24. newImage.ReleaseDC();
  25. ::SetBrushOrgEx(newImage.GetDC(), 0, 0, NULL);
  26. newImage.ReleaseDC();
  27. ::SetStretchBltMode(newImage.GetDC(), nPreMode);
  28. newImage.ReleaseDC();
  29.  
  30. oldImage.Detach();
  31.  
  32. hXLBitmap = XLGP_ConvertDDBToXLBitmap(CClientDC(NULL), newImage.Detach(), XLGRAPHIC_CT_ARGB32);
  33. XLUE_PushBitmap(luaState,hXLBitmap);
  34.  
  35. return 1;
  36. }
  37.  
  38. return 0;
  39. }

函数没有使用专业的处理算法,不过锯齿明显有改善,能满足日常需求。


记录,为更好的自己!

迅雷Bolt图像拉伸不清晰的解决办法的更多相关文章

  1. C#一例绘制字体不清晰的解决办法

    public static Bitmap GetPieWithText(String text, Color color, Color fontColor,Font font) { ; Bitmap ...

  2. 迅雷Bolt的ClipSubBindBitmap函数特别说明

    因为在工作中基于迅雷Bolt开发的是IM产品,需要实现自定义用户头像的功能. 但Bolt中对图像的默认拉伸锯齿效果非常明显,所以自己实现了图像拉伸函数,代码已共享,具体可查看:<迅雷Bolt图像 ...

  3. 【桌面程序搞界面再也不怕了】:迅雷BOLT入门(一)开篇 附程序和源码

    本来想多蛤一下前因后果,突然意兴阑珊不想多说啦,直接帖效果吧. 这个是用迅雷BOLT把原来写的一个IE拦截器的界面重写了一下.界面效果是直接从单位的大屏系统改过来的,其中文本框部分,还请设计大屏的小姑 ...

  4. mp4网页播放代码,有声音无图像的解决办法~

    mp4网页播放代码,有声音无图像的解决办法~     关于网页播放mp4格式的视频,找了一些插件,这里推荐一下video.js 官方网址:http://www.videojs.com/ github ...

  5. es6 Object.assign ECMAScript 6 笔记(六) ECMAScript 6 笔记(一) react入门——慕课网笔记 jquery中动态新增的元素节点无法触发事件解决办法 响应式图像 弹窗细节 微信浏览器——返回操作 Float 的那些事 Flex布局 HTML5 data-* 自定义属性 参数传递的四种形式

    es6 Object.assign   目录 一.基本用法 二.用途 1. 为对象添加属性 2. 为对象添加方法 3. 克隆对象 4. 合并多个对象 5. 为属性指定默认值 三.浏览器支持 ES6 O ...

  6. [转载]常见的移动端H5页面开发遇到的坑和解决办法

    转过来,平时看看.虽然还有很多问题至今无解.比如:华为麒麟950的P8和meta打开我们的应用首页经常偶发白屏.!! 1.安卓浏览器看背景图片,有些设备会模糊. 用同等比例的图片在PC机上很清楚,但是 ...

  7. NIVIDIA Tegra K1 QWT安装使用问题和解决办法

    在Linux系统下,Tegra K1(ARM体系),只有QtCreator的环境下,去安装Qwt6.1.0: 下载: 系统安装好之后,直接联网在系统自带的软件安装程序中搜索Qt,安装Qt5.2.1,之 ...

  8. JS.中文乱码,Jsp\Servlet端的解决办法

    JS.中文乱码,Jsp\Servlet端的解决办法 2010-03-08 15:18:21|  分类: Extjs |  标签:encodeuricomponent  乱码  urldecoder   ...

  9. GDI+中发生一般性错误的解决办法

    这个错误经常发生,代码如下: private  static  byte[] GetBytes (Image image) { try { if (image == null) return null ...

随机推荐

  1. java泛型<? extends E> 有上限通配符与<? Super E>有上限通配符

    通配符?,?表示占位,表明将来使用的时候在指明类型 <?>无限定的通配符, 是让泛型能够接受未知类型的数据 <? extends E> 有上限通配符,能够接受指定类及其子类类型 ...

  2. node 动态页面渲染

    代码: 'use strict' const express = require('express'); const consoldiate = require('consolidate'); con ...

  3. c++ map的使用方法

    1.头文件:#include<map> 2.定义:map<typename1,typename2> mp 注:字符串数组只能用string而不能使用char[] 3.访问方式: ...

  4. 各种数据库分页语句整理以及Oracle数据库中的ROWNUM和ORDER BY的区别

    .oracle数据库分页 select * from (select a.*,rownum rc from 表名 where rownum<=endrow) a where a.rc>=s ...

  5. PIC32MZ 通过U盘在线升级 -- USB Host bootloader

    了解bootloader的实现,请加QQ: 1273623966(验证填bootloader); 欢迎咨询或定制bootloader; 我的博客主页 www.cnblogs.com/geekygeek ...

  6. PRO*C 函数事例 2 -- 数据库操作

    Pro*C Oracle 的嵌入式开发,数据库处理部分最好能提取到一个模块,按照对不同数据库表的操作分成不同的.pc文件(如 DbsInstStat.pc).将此模块编译成库(c文件编译时链接此库), ...

  7. [转] Bash脚本:怎样一行行地读文件(最好和最坏的方法)

    用bash脚本读文件的方法有很多.请看第一部分,我使用了while循环及其后的管道命令(|)(cat $FILE | while read line; do … ),并在循环当中递增 i 的值,最后, ...

  8. Linux设定IP地址

    下面这些内容是直接从其他地方扒拉过来的,后期根据自己使用情况修改补充 虚拟机的连接方式 1.NAT(网络地址转换,虚拟机可以上网,但不能和物理机通信)-----VMnet82.host only(主机 ...

  9. 快速平方根算法的javascript实现

    前几天看见了一个来自雷神之槌的平方根源码,原理多方有介绍,不赘述. 源码是c语言写的,我思考后发现这样的算法在javascript中也是可以完成的. function InvSqrt(x){ var ...

  10. Vue学习(四):条件渲染

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...