gto250 发表于 2010-5-9 08:38:21

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

本帖最后由 gto250 于 2010-5-9 19:19 编辑

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

afan 发表于 2010-5-9 13:21:06

用内嵌窗口的方法应该可以,不过,如果是做按钮的话似乎太麻烦了

gto250 发表于 2010-5-9 15:50:34

不是做按钮,只是将这整张的图片中的按钮部分的图片显示出来,并不是用内嵌窗口的方法
在我之前看到的那个天气的源码中,表示天气情况的图像也是一整张的,根据变量选取其中的一部分显示出来

anchie 发表于 2010-5-9 18:27:20

关注中 期待高手解答

afan 发表于 2010-5-9 19:31:09

解决了?怎么解决的?

pusofalse 发表于 2010-5-9 19:31:23

怎么解决的?能把解决方法分享出来吗?

gto250 发表于 2010-5-9 21:48:10

_GDIPlus_BitmapCloneArea

这个就可以了

C.L 发表于 2010-5-9 22:57:46

本帖最后由 C.L 于 2010-5-9 23:02 编辑

做个练习,1楼的图片存为:137a.jpg,放在同目录下:

#include <GuiConstantsEx.au3>
#include <GDIPlus.au3>

Dim $images
$images = "0,0,90,90"
$images = "105,0,90,90"
$images = "205,0,220,90"
$images = "0,110,90,90"
$images = "105,110,90,90"
$images = "205,110,220,90"
$images = "0,215,90,90"
$images = "105,220,90,90"
$images = "205,220,220,90"
$images = "0,325,90,90"
$images = "105,325,90,90"
$images = "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
        $iy0 = $aResult
        $iX = $aResult
        $iY = $aResult
        _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

rho123 发表于 2010-5-12 00:57:32

不错 这非常有意思 收藏了

lxz 发表于 2010-5-12 06:35:55

代码收藏了....

lanfengc 发表于 2010-5-16 11:54:26

选取整张图片中的一部分留脚印专用以备以后查阅.

qqmmcc 发表于 2010-5-25 00:13:03

留脚印专用以备以后查阅.

dajun 发表于 2010-5-25 06:03:16

备以后查阅

xiezhang6263 发表于 2010-8-15 00:04:41

分享了谢谢了

qtfy 发表于 2010-8-15 10:19:02

有没有查找图片的方法啊
页: [1] 2
查看完整版本: 关于选取整张图片中的一部分的问题(已经解决)