找回密码
 加入
搜索
查看: 7519|回复: 15

[图形处理] 关于选取整张图片中的一部分的问题(已经解决)

 火.. [复制链接]
发表于 2010-5-9 08:38:21 | 显示全部楼层 |阅读模式
本帖最后由 gto250 于 2010-5-9 19:19 编辑

以前在论坛上看到过一个天气预报的代码,它里面表示天气状况都是用图片显示的,如太阳,雨,多云等,而这些图片又是一整张的,就是说,当它显示天气状况时,是选择图片的一部分显示出来。
但是现在好像找不到那个代码了,有哪位兄弟有保存过那个代码的请共享一下
或者没有收藏过那代码,却也能实现这个功能的兄弟,请参照我附件中的图片
通过个例子将图片中的按钮图片分别显示出来
谢谢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2010-5-9 13:21:06 | 显示全部楼层
用内嵌窗口的方法应该可以,不过,如果是做按钮的话似乎太麻烦了
 楼主| 发表于 2010-5-9 15:50:34 | 显示全部楼层
不是做按钮,只是将这整张的图片中的按钮部分的图片显示出来,并不是用内嵌窗口的方法
在我之前看到的那个天气的源码中,表示天气情况的图像也是一整张的,根据变量选取其中的一部分显示出来
发表于 2010-5-9 18:27:20 | 显示全部楼层
关注中 期待高手解答
发表于 2010-5-9 19:31:09 | 显示全部楼层
解决了?怎么解决的?
发表于 2010-5-9 19:31:23 | 显示全部楼层
怎么解决的?能把解决方法分享出来吗?
 楼主| 发表于 2010-5-9 21:48:10 | 显示全部楼层
_GDIPlus_BitmapCloneArea

这个就可以了
发表于 2010-5-9 22:57:46 | 显示全部楼层
本帖最后由 C.L 于 2010-5-9 23:02 编辑

做个练习,1楼的图片存为:137a.jpg,放在同目录下:
#include <GuiConstantsEx.au3>
#include <GDIPlus.au3>

Dim $images[12]
$images[0] = "0,0,90,90"
$images[1] = "105,0,90,90"
$images[2] = "205,0,220,90"
$images[3] = "0,110,90,90"
$images[4] = "105,110,90,90"
$images[5] = "205,110,220,90"
$images[6] = "0,215,90,90"
$images[7] = "105,220,90,90"
$images[8] = "205,220,220,90"
$images[9] = "0,325,90,90"
$images[10] = "105,325,90,90"
$images[11] = "205,325,220,90"

$form1 = GUICreate("test", 400, 300, @DesktopWidth / 2 - 200, @DesktopHeight / 2 - 150)
$graphic = GUICtrlCreatePic("137a.jpg", 150, 100, 220, 100, 0x0080)
GUICtrlSetBkColor ($graphic,0xffffff)
$lable = GUICtrlCreateLabel ("选择图标:",150,43)
$combo = GUICtrlCreateCombo("", 230, 40)
GUICtrlSetData($combo, "1|2|3|4|5|6|7|8|9|10|11|12", "1")

GUISetState(@SW_SHOW)

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $combo
                        $sNum = GUICtrlRead($combo) - 1
                        $x = _makeimg($sNum)
                        GUICtrlSetImage($graphic, "GDIPlus_" & $sNum & ".bmp")
                        GUICtrlSetPos($graphic, 150, 100, $x, 90)
                        FileDelete ("GDIPlus_"&$sNum&".bmp")
        EndSwitch
WEnd

Func _makeimg($Num)
        Local $hBitmap, $hClone, $hImage, $ix0, $iy0, $iX, $iY
        $sResult = $images[$Num]
        $aResult = StringSplit($sResult, ",")
        $ix0 = $aResult[1]
        $iy0 = $aResult[2]
        $iX = $aResult[3]
        $iY = $aResult[4]
        _GDIPlus_Startup()
        $hImage = _GDIPlus_ImageLoadFromFile("137a.jpg")
        $hClone = _GDIPlus_BitmapCloneArea($hImage, $ix0, $iy0, $iX, $iY)
        _GDIPlus_ImageSaveToFile($hClone, "GDIPlus_" & $Num & ".bmp")
        _GDIPlus_ImageDispose($hClone)
        _GDIPlus_ImageDispose($hImage)
        _GDIPlus_Shutdown()
        Return $iX
EndFunc   ;==>_makeimg

评分

参与人数 3威望 +2 金钱 +10 贡献 +9 收起 理由
pusofalse + 10
lynfr8 + 9
afan + 2

查看全部评分

发表于 2010-5-12 00:57:32 | 显示全部楼层
不错 这非常有意思 收藏了
发表于 2010-5-12 06:35:55 | 显示全部楼层
代码收藏了....
发表于 2010-5-16 11:54:26 | 显示全部楼层
选取整张图片中的一部分  留脚印专用  以备以后查阅.
发表于 2010-5-25 00:13:03 | 显示全部楼层
留脚印专用  以备以后查阅.
发表于 2010-5-25 06:03:16 | 显示全部楼层
备以后查阅
发表于 2010-8-15 00:04:41 | 显示全部楼层
分享了谢谢了
发表于 2010-8-15 10:19:02 | 显示全部楼层
有没有查找图片的方法啊
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-16 12:09 , Processed in 0.084934 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表