首页 > 代码库 > 迅雷Bolt图像拉伸不清晰的解决办法
迅雷Bolt图像拉伸不清晰的解决办法
迅雷Bolt库中的图像拉伸的效果锯齿比较严重,常见的导致锯齿的情况:
1、在使用ImageObject时,drawmode为1拉伸模式下;
2、使用Bitmap类的Stretch函数拉伸图像;
虽然ImageObject有antialias属性支持反走样,不过设置后没有特别明显的优化效果。
解决锯齿的办法就是用C++编写拉伸函数,大家在处理时可以参考我写的处理函数:
int CXLuaCImpl::StretchBitmap(lua_State* luaState){ XL_BITMAP_HANDLE hXLBitmap = NULL; if (XLUE_CheckBitmap(luaState, 2, &hXLBitmap)) { int nWidth = lua_tointeger(luaState,3); int nHeight = lua_tointeger(luaState,4); CImage oldImage; CImage newImage; HBITMAP hBitmap = TransparentImage(XLGP_ConvertXLBitmapToDIB(hXLBitmap, 32)); oldImage.Attach(hBitmap); if(!newImage.CreateEx(nWidth, nHeight, 24, BI_RGB)) { oldImage.Detach(); return 0; } int nPreMode = ::SetStretchBltMode(newImage.GetDC(), HALFTONE); newImage.ReleaseDC(); oldImage.Draw(newImage.GetDC(), 0, 0, nWidth, nHeight, 0, 0, oldImage.GetWidth(), oldImage.GetHeight()); newImage.ReleaseDC(); ::SetBrushOrgEx(newImage.GetDC(), 0, 0, NULL); newImage.ReleaseDC(); ::SetStretchBltMode(newImage.GetDC(), nPreMode); newImage.ReleaseDC(); oldImage.Detach(); hXLBitmap = XLGP_ConvertDDBToXLBitmap(CClientDC(NULL), newImage.Detach(), XLGRAPHIC_CT_ARGB32); XLUE_PushBitmap(luaState,hXLBitmap); return 1; } return 0;}
函数没有使用专业的处理算法,不过锯齿明显有改善,能满足日常需求。
记录,为更好的自己!
迅雷Bolt图像拉伸不清晰的解决办法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。