yiruirui 发表于 2010-8-23 11:56:04

_ImageDraw此函数的定义已经列出,如何理解,求高手帮忙!(已解决)

本帖最后由 yiruirui 于 2010-8-30 09:17 编辑

http://www.autoitx.com/forum.php?mod=viewthread&tid=13262&highlight=%CD%B8%C3%F7
这个网站的例子非常经典,小弟想学习学习,遇到了一个函数,理解不了,求能理解的大大们帮帮小弟,万分感激!感激涕零!
Func _ImageDraw($State = "normal", $Case = ""); 利用为PNG图片
        Local $hGraphic1, $hBitmap, $hGraphic2
        Local $Image

        ;默认设置
        For $i = 1 To 10
                $Image[$i] = $NormalImage
        Next
        $Image = $NormalImage_Small
        $Image = $NormalImage_Exit

        ;创建一个新的位图,这样,原来打开PNG是保持不变
        $hGraphic1 = _GDIPlus_GraphicsCreateFromHWND(_WinAPI_GetDesktopWindow())
        $hBitmap = _GDIPlus_BitmapCreateFromGraphics($Width, $Height, $hGraphic1)
        $hGraphic2 = _GDIPlus_ImageGetGraphicsContext($hBitmap)

        ; 绘制原 png 到我新创建的位图
        Switch $State
                Case "normal"
                Case "pressed"
                        Switch $Case
                                Case 1 To 10
                                        $Image[$Case] = $PressedImage
                                Case 11
                                        $Image = $PressedImage_Exit
                        EndSwitch
                Case "over"
                        Switch $Case
                                Case 1 To 10
                                        $Image[$Case] = $OverImage
                                Case 11
                                        $Image = $OverImage_Exit
                        EndSwitch
        EndSwitch

        For $i = 1 To 10
                _GDIPlus_GraphicsDrawImageRect($hGraphic2, $Image[$i], 0, ($i - 1) * 41, 167, 57)
        Next
        _GDIPlus_GraphicsDrawImageRect($hGraphic2, $Image, 3, 411, 111, 53)
        _GDIPlus_GraphicsDrawImageRect($hGraphic2, $Image, 107, 412, 57, 52)

        ;清理不再需要的资源
        _GDIPlus_GraphicsDispose($hGraphic2)
        _GDIPlus_GraphicsDispose($hGraphic1)

        ;返回新的位图
        Return $hBitmap
EndFunc   ;==>_ImageDraw

yiruirui 发表于 2010-8-23 11:57:44

对以上函数的调用方式如下:
;皮肤创作区
$Skin = _ImageDraw()
For $i = 1 To 11
        $Over[$i] = _ImageDraw("over", $i)
        $Pressed[$i] = _ImageDraw("pressed", $i)
Next
#EndRegion Image GUI
相信大家应该都知道的,毕竟这个文章很经典!

afan 发表于 2010-8-23 12:52:32

对照帮助文档逐个理解是解决此类问题的最好途径,而且印象会很深

minterz 发表于 2010-8-23 13:33:50

楼上说的是。。。

水木子 发表于 2010-8-23 13:35:15

乍一看这贴的标题,我还以为是搞什么募捐的呢!“资助”

yiruirui 发表于 2010-8-23 13:42:32

回复 5# 水木子


    还以为你是回答问题的,你的话严重侮辱了我的帖子,别看你写着超级版主,我不怕。有种就把我的问题回答了,不要讲没用的废话,这里是技术论坛,不是撒野的地方。

水木子 发表于 2010-8-23 13:46:55

回复 6# yiruirui

你别激动,如果你觉得我的话侮辱了你,我立即向你道歉,你太多心了,我只是指出你标题中用词不当的地方。

别看我是超级版主,其实我就是个菜鸟混的,你的代码我基本看不懂,实在帮不上忙,只有学习的份儿。

afan 发表于 2010-8-23 13:47:42

回复水木子


    还以为你是回答问题的,你的话严重侮辱了我的帖子,别看你写着超级版主,我不怕。有 ...
yiruirui 发表于 2010-8-23 13:42 http://www.autoitx.com/images/common/back.gif


    木子斑竹只是指出了你标题的错误用词,何来撒野之说?

yiruirui 发表于 2010-8-23 13:49:23

回复 7# 水木子


    我的错,我激动了,我向你道歉!已经把标题改成了!3KS!

yiruirui 发表于 2010-8-23 13:50:05

回复 8# afan


    我多心了,谢谢A版提醒,已经觉悟,标题已经改正!3KS!

水木子 发表于 2010-8-23 13:55:31

回复 10# yiruirui

没事!修改了就好,不然容易误解的。

希望大家能和睦相处,在一个和谐的气氛下共同学习进步。

还有一事我想说明下,超级版主,听起来是挺牛逼的,不过这并不代表面面俱到,大家各有所长嘛!这也是论坛的特点,在一起互相学习,共同取长补短,这不是很好吗?你说是吧!{:face (411):}

yiruirui 发表于 2010-8-23 13:57:39

回复 11# 水木子


    恩,明白的!完全同意!顶木版!

hzxymkb 发表于 2010-8-23 14:26:51

来迟了!不好意思!看来误会已经解决了!
楼主下次发帖的时候注意一下就行了哈!
{:face (301):}

republican 发表于 2010-8-23 15:02:40

如果你一点都不懂的话,这个例子并不适合你。里面的数组操作只会让人感到困惑。你搜搜PNG做按钮的例子(api及gdi),再加官网的PNG菜单,看上两天自然就明白的了。

guland 发表于 2010-8-24 19:37:23

回复 1# yiruirui


实在不好意思.....没看明白你想要干什么........{:face (303):}.




哈哈
页: [1] 2
查看完整版本: _ImageDraw此函数的定义已经列出,如何理解,求高手帮忙!(已解决)