如何读取BMP图片中某个位图的资源(已解决)
本帖最后由 nmgwddj 于 2012-2-5 22:34 编辑附件中的几个BMP图片是特制的,某无盘软件的控制台图片资源。
我只是想通过代码的方式获取这些图片资源里面的位图资源来做按钮,看如下截图
上图是鼠标悬停状态,可以在附件中的bmp图片中看到每个按钮的 静止-鼠标悬停-按下的状态。但是几种状态都是只储存在一个BMP图片中的。所以想请教以下如何在代码中实现应用到按钮上。
这个我也想学,帮顶! 位图内部有资源索引号 回复 3# netegg
是否可以利用_GUICtrlButton_SetImage来设置按钮图片,我试了一试,是显示整个图片,并不是按我设置的索引来显示的。 用按钮控件或图片控件都可以,不过前提可能都需要按坐标读取位图的各个区域。
或者,先分割图片为4个独立的bmp文件,那样相对简单点,也便于修改。 回复 5# afan
我在用按钮做,只不过多了个边
刚才想了想,应该是一个图片控件,图片显示按整个图片的坐标来显示
剩下的就是监控鼠标的悬停和按下事件了。
先把大致界面做出来,这个等把其他功能搞定再说。 拆位图还真没什么印象了,好像有个api可以弄 http://www.autoitx.com/forum.php?mod=redirect&goto=findpost&pid=370773&ptid=28704
像我这个帖子这样吗? 切割图片后再分开研究? 回复 5# afan
用第二种方式已经可以实现,第一种不知道A版可有高见。虚心学习。 回复 10# nmgwddj
高见可没有,可以参考 http://www.autoitx.com/forum.php?mod=redirect&goto=findpost&ptid=30132&pid=393983&fromuid=7644923 本帖最后由 nmgwddj 于 2012-2-5 18:48 编辑
回复 11# afan
非常感谢,分割图片某个位置可以实现,不知道在不另存为Bmp文件的情况下如何直接在代码中调用图片资源从而显示在窗口上。 注释掉 _GDIPlus_ImageDispose($hImage1)
返回 $hImage1 可直接使用。 本帖最后由 nmgwddj 于 2012-2-5 19:09 编辑
回复 13# afan
貌似不可行,莫非是我哪里理解错误了!
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
#region ### START Koda GUI section ### Form=
$sInPic = 'AddMore.bmp'
$Image = _ImageRectToFile($sInPic, 339, 0, 113, 50)
;ShellExecute($sOutPic)
$Form1 = GUICreate("Form1", 623, 448, 229, 170)
$Pic1 = GUICtrlCreatePic($Image, 120, 72, 204, 84)
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func _ImageRectToFile($sInPic, $iSrcX, $iSrcY, $iSrcW, $iSrcH, $iDstX = 0, $iDstY = 0, $iDstW = $iSrcW, $iDstH = $iSrcH)
_GDIPlus_Startup()
$hImage = _GDIPlus_ImageLoadFromFile($sInPic)
$hGraphics = _GDIPlus_ImageGetGraphicsContext($hImage)
$hImage1 = _GDIPlus_BitmapCreateFromGraphics($iDstW, $iDstH, $hGraphics)
$hGraphics1 = _GDIPlus_ImageGetGraphicsContext($hImage1)
_GDIPlus_GraphicsDrawImageRectRect($hGraphics1, $hImage, $iSrcX, $iSrcY, $iSrcW, $iSrcH, $iDstX, $iDstY, $iDstW, $iDstH)
;_GDIPlus_ImageSaveToFile($hImage1, $sOutPic)
_GDIPlus_GraphicsDispose($hGraphics)
_GDIPlus_GraphicsDispose($hGraphics1)
_GDIPlus_ImageDispose($hImage)
;_GDIPlus_ImageDispose($hImage1)
_GDIPlus_Shutdown()
Return $hImage1
EndFunc ;==>_ImageRectToFile
图片资源 不明白,围观。
页:
[1]
2