陕西11选5链接
簡易工作室|專注AutoIT(Au3)
  • 陕西11选5链接
  • 流●年
  • 筆●記
    • 學習隨記
    • 源碼示例
  • 腳●本
    • UDF(收集)
    • 工作室UDF
    • 工具●教程
    • 教程之GDI
  • 微●語
  • 作●品
  • 下●載
  • 關于我
1月42015

[教程] 第十一講 GDI+畫筆之補充 畫筆的縮放和旋轉

作者:綠色風   發布:2015-1-4 21:09 Sunday   分類:教程之GDI   閱讀:4907次   評論:0條  

陕西11选5链接 www.kbcqhj.com.cn ACN論壇.講師:seniors   轉載請說明此文出處所在:<<簡易工作室>>,謝謝!

今天又研究了這個畫筆的縮放和旋轉,百思不得其解,突然發現畫筆最后一個參數是指寬度的單位,

會不會是單位不對,縮放不了結果,研究發現,畫筆的單位一定要用0也就是通用單位,而非物理

單位,這樣才能縮放和旋轉放上代碼共享之

NewImage.png

#include <APIConstants.au3>
#include <WinAPIEx.au3>
#include <GDIPlus.au3>
#include <GDIPlusEx.au3>
#include <GuiSlider.au3>
Global $ScaleX = 5, $ScaleY = 1, $nAngle = 0
GUICreate("第十一講 GDI+畫筆補充縮放旋轉", 300, 300)
$nCtrlId = GUICtrlCreatePic("", 0, 0, 300, 200)
$hPicWnd = GUICtrlGetHandle($nCtrlId)
 
Global $rect[3][2]
init()
GUIRegisterMsg($WM_HSCROLL, "onHSCROLL")
GUISetState()
 
update()
 
While 1
        $Msg = GUIGetMsg()
        Switch $Msg
                Case -3
                        ExitLoop
 
        EndSwitch
WEnd
 
GUIDelete()
Exit
 
Func init()
        GUICtrlCreateLabel("水平縮放", 5, 205)
        $rect[0][0] = GUICtrlCreateSlider(60, 205, 100)
        GUICtrlSetLimit(-1, 10, 1)
        GUICtrlSetData(-1, $ScaleX)
        $rect[0][1] = GUICtrlCreateLabel("", 170, 205, 40, 25)
        GUICtrlSetData(-1, $ScaleX)
 
        GUICtrlCreateLabel("垂直綻放", 5, 235)
        $rect[1][0] = GUICtrlCreateSlider(60, 235, 100)
        GUICtrlSetLimit(-1, 10, 1)
        GUICtrlSetData(-1, $ScaleY)
        $rect[1][1] = GUICtrlCreateLabel("", 170, 235, 40, 25)
        GUICtrlSetData(-1, $ScaleY)
 
        GUICtrlCreateLabel("旋轉角度", 5, 265)
        $rect[2][0] = GUICtrlCreateSlider(60, 265, 100)
        GUICtrlSetLimit(-1, 360, 0)
        GUICtrlSetData(-1, $nAngle)
        _GUICtrlSlider_SetTicFreq(-1, 60)
        $rect[2][1] = GUICtrlCreateLabel("", 170, 265, 40, 25)
        GUICtrlSetData(-1, $nAngle)
EndFunc   ;==>init
 
Func onHSCROLL($hWnd, $iMsg, $wParam, $lParam)
        Switch _WinAPI_GetDlgCtrlID($lParam)
                Case $rect[0][0]
                        $ScaleX = GUICtrlRead($rect[0][0])
                        GUICtrlSetData($rect[0][1], $ScaleX)
                Case $rect[1][0]
                        $ScaleY = GUICtrlRead($rect[1][0])
                        GUICtrlSetData($rect[1][1], $ScaleY)
                Case $rect[2][0]
                        $nAngle = GUICtrlRead($rect[2][0])
                        GUICtrlSetData($rect[2][1], $nAngle)
        EndSwitch
        update()
EndFunc   ;==>onHSCROLL
 
Func update()
        Local $HWND_CX = _WinAPI_GetWindowWidth($hPicWnd)
        Local $HWND_CY = _WinAPI_GetWindowHeight($hPicWnd)
        _GDIPlus_Startup()
        $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hPicWnd)
        $hBitmap = _GDIPlus_BitmapCreateFromGraphics($HWND_CX, $HWND_CY, $hGraphics)
        $hBackbuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
        _GDIPlus_GraphicsClear($hBackbuffer, 0xFFECE9D8)
        _GDIPlus_GraphicsSetSmoothingMode($hBackbuffer, 2);光滑模式,2為8*8抗距齒
        PenScale($hBackbuffer)
        _GDIPlus_GraphicsDrawImageRect($hGraphics, $hBitmap, 0, 0, $HWND_CX, $HWND_CY)
        _GDIPlus_BitmapDispose($hBitmap)
        _GDIPlus_GraphicsDispose($hBackbuffer)
        _GDIPlus_GraphicsDispose($hGraphics)
        _GDIPlus_Shutdown()
EndFunc   ;==>update
 
Func PenScale($hGraphics)
        Local $hPen = _GDIPlus_PenCreate(0xFFFF0000, 2, 0);建立畫筆,最后一個參數0是指通用單位,只有通用單位才能縮放和旋轉,不能用2像素
        Local $hBrush = _GDIPlus_LineBrushCreate(0, 0, 20, 20, 0xFFFFFF00, 0xFFFF0000, 1)
        Local $hPen2 = _GDIPlus_PenCreate2($hBrush, 2, 0);建立通用單位的漸變畫筆
        _GDIPlus_BrushDispose($hBrush)
        ;畫筆縮放的旋轉
        _GDIPlus_PenScaleTransform($hPen, $ScaleX, $ScaleY, 1)
        _GDIPlus_PenRotateTransform($hPen, $nAngle, 1)
        _GDIPlus_PenScaleTransform($hPen2, $ScaleX, $ScaleY, 1)
        _GDIPlus_PenRotateTransform($hPen2, $nAngle, 1)
        ;繪制矩形和橢圓看效果
        _GDIPlus_GraphicsDrawRect($hGraphics, 10, 10, 100, 80, $hPen)
        _GDIPlus_GraphicsTranslateTransform($hGraphics, 0, 100)
        _GDIPlus_GraphicsDrawEllipse($hGraphics, 10, 10, 100, 80, $hPen)
        _GDIPlus_GraphicsResetTransform($hGraphics)
        _GDIPlus_GraphicsTranslateTransform($hGraphics, 150, 0)
        _GDIPlus_GraphicsDrawRect($hGraphics, 10, 10, 100, 80, $hPen2)
        _GDIPlus_GraphicsTranslateTransform($hGraphics, 0, 100)
        _GDIPlus_GraphicsDrawEllipse($hGraphics, 10, 10, 100, 80, $hPen2)
        ;釋放畫筆
        _GDIPlus_PenDispose($hPen)
        _GDIPlus_PenDispose($hPen2)
EndFunc   ;==>PenScale




本文固定鏈接: //www.kbcqhj.com.cn/post-59.html

blogger
該日志由 綠色風 于2015-1-4 21:09 Sunday發表在 教程之GDI 分類下。
版權所有:《陕西11选5链接》 → 《[教程] 第十一講 GDI+畫筆之補充 畫筆的縮放和旋轉》;
除特別標注,本博客所有文章均為原創. 互聯分享,尊重版權,轉載請以鏈接形式標明本文地址;
本文標簽: GDI 教程 GDI教程
et_highlighter51
上一篇::[教程]第十二講 GDI+路徑
下一篇:[教程] 第十一講 GDI+畫筆及線型

熱門文章

  • Au3中文內碼轉換UDF,方便調用
  • 顯示器亮度,對比度,色溫縮放調節,筆記本亮度調節
  • Au3的A*星尋路算法與示例
  • 顯示器 EDID 讀取,生產日期和分辨率
  • 簡單的文本替換偽原則工具

相關文章

  • [教程] 第十一講 GDI+畫筆之補充 畫筆的縮放和旋轉
  • [教程] 第十九講 GDI+窗口自繪帶控件
  • [教程] 第五講 GDI路徑和選區
  • [教程]第十七講 GDI+混合模式透明度
  • [教程]第十講之分解2-多色漸變畫刷
取消回復

發表評論

親,頭像對么?

48 + 35 =

提交中,請稍候……


木有頭像就木JJ啦!還木有頭像嗎?點這里申請屬于你的個性Gravatar頭像吧!

?
    站點統計
    • 日志總數: 299 篇
    • 評論數量: 87 條
    • 微語數量: 40 條
    • 附件總量: 301 件
  • 打賞"綠色風"



      掃碼關注本站公眾號 可搜本站內容

  • Autoit V3 腳本交流群

      常駐群1:477266297
      常駐群2:40672266


  • 標簽

      QQ UDF IP 吐嘈 AU3 Enum 枚舉常量 AU3小技巧 數組 進度條 對象 刪除重復行 趣圖 Hex 獲取網絡時間 swf UTC 日期 時間 POST 三目運算 三元判斷 小技巧 GDI 收款 SQL 工具 映像 MV 劫持 API 教程 CHM 按鍵 GDI教程 杯舉 按時間 笑一笑 2014 網絡用語 2015 免費 元宵 視圖 listview au3示例 美女 壁紙 游戲 差異加密 加密 串口 WebAPI IE TTS 環境yo 過去 驗證碼 圖片分割 VBS HiFi Mp3 免費空間 QQchat 機器人 win10 電影 彩票 入門教程 幫助文檔 事件 編碼 CMD MD5 打賞 翻譯 作品 下載 多線程 ListViewRead 贊助 鼠標 窗口尺寸 分享 匯編注入 干貨 復制 移動 gizp 樂一樂 正則 autoit wav波形文件 播放 authcode 鼠標HOOK 鍵盤HOOK 剪切板 復制圖片 文件遍歷 JDK 網卡 GetAdaptersInfo 內存 CPU 轉碼
  • 鏈接

    • AU3中文論壇
    • 易捷博客
    • 簡愛博客
    • 胡言亂語-小胡老師
    • 又淘氣.我的世界
    • 御坂網絡
    • 大師兄U盤裝系統
    • 順網小哥'S Blog
    • 猛牛哥的博客
    • 墨澀頹廢網
  • 存檔

    • 2019年8月(1)
    • 2019年5月(2)
    • 2019年4月(2)
    • 2019年3月(3)
    • 2019年2月(1)
    • 2018年11月(1)
    • 2018年10月(1)
    • 2018年9月(3)
    • 2018年8月(4)
    • 2018年4月(2)
    • 2018年3月(1)
    • 2018年1月(6)
    • 2017年12月(1)
    • 2017年11月(8)
    • 2017年7月(2)
    • 2017年6月(1)
    • 2017年5月(2)
    • 2017年4月(8)
    • 2017年3月(2)
    • 2017年2月(3)
    • 2017年1月(3)
    • 2016年12月(5)
    • 2016年11月(1)
    • 2016年10月(1)
    • 2016年9月(2)
    • 2016年8月(2)
    • 2016年7月(4)
    • 2016年6月(3)
    • 2016年5月(2)
    • 2016年4月(3)
    • 2016年3月(58)
    • 2016年1月(6)
    • 2015年12月(7)
    • 2015年11月(3)
    • 2015年10月(10)
    • 2015年9月(9)
    • 2015年8月(11)
    • 2015年7月(11)
    • 2015年6月(1)
    • 2015年5月(6)
    • 2015年4月(14)
    • 2015年3月(9)
    • 2015年2月(6)
    • 2015年1月(12)
    • 2014年12月(19)
    • 2014年11月(18)
    • 2014年10月(12)
Copyright © 2013 陕西11选5链接. Powered by emlog. Theme by 射雕天龍. 陕西11选5链接 sitemap