绿色风's Blog
专注AutoIT(Au3)
  • 首页
  • 流●年
  • 笔●记
    • 学习随记
    • 源码示例
  • 脚●本
    • UDF(收集)
    • 工作室UDF
    • 工具●教程
    • 教程之GDI
  • 作●品
  • 下●载
  • 情怀ExcelTip
8月22022

GDI+示例1

作者:绿色风   发布:2022-8-2 5:25 Tuesday   分类:源码示例   阅读:3937次   评论:0条  


GDI绘制

#include <GDIPLuS.au3>
Global Const $width = 460
Global Const $height = 400

Opt("GUIOnEventMode", 1)

$hwnd = GUICreate("", $width, $height)
GUISetBkColor(0xFFFFFF)
GUISetOnEvent(-3, "close")
GUISetState()
_GDIPlus_Startup()
$graphics = _GDIPlus_GraphicsCreateFromHWND($hwnd)
$pen2 = _GDIPlus_PenCreate(0x4FBB00C7, 1)
_GDIPlus_GraphicsDrawLine($graphics, 230, 15, 230, 390, $pen2)
_GDIPlus_GraphicsDrawLine($graphics, 10, 200, 450, 200, $pen2)
_AntiAlias($graphics, 4)
Global $t = 0, $s

While 1
    While $s < 4
        For $i = 1 To 56
            _GDIplus_GraphicsDrawArrow($graphics, 230, 200, 300, 7 * $i, 100, 900, $pen2)
            Sleep(30)
         ;_GDIplus_GraphicsClear($graphics,0xFFFFFFFF)
        Next
        $s += 1
    WEnd
    Sleep (500)
    _GDIplus_GraphicsClear($graphics,0xFFFFFFFF)
    _GDIPlus_GraphicsDrawLine($graphics, 230, 15, 230, 390, $pen2)
    _GDIPlus_GraphicsDrawLine($graphics, 10, 200, 450, 200, $pen2)
    $s = 0
WEnd

Do
    Sleep(100)
Until False

Func _GDIplus_GraphicsDrawArrow($hGraphics, $iX1, $iY1, $iX2, $iY2, $iArrowLength, $iArrowBase, $hPen)
    Local $iLength
    Local $iLengthWithoutArrow
    Local $iAngle
    Local $iArrowX
    Local $iArrowY
    $iArrowBase /= 2
    $iLength = Sqrt(($iX2 - $iX1) ^ 2 + ($iY2 - $iY1) ^ 2)
    $iLengthWithoutArrow = $iLength - $iArrowLength
    Switch $s
        Case 0
            $iAngle = _ATan2(($iX1 - $iX2), ($iY1 - $iY2))
        Case 1
            $iAngle = _ATan2(($iX2 - $iX1), ($iY2 - $iY1))
        Case 2
            $iAngle = _ATan2(($iY2 - $iY1), ($iX2 - $iX1))
        Case 3
            $iAngle = _ATan2(($iY1 - $iY2), ($iX1 - $iX2))
    EndSwitch
    $iArrowX = $iX1 + ($iLengthWithoutArrow * Sin($iAngle))
    $iArrowY = $iY1 - ($iLengthWithoutArrow * Cos($iAngle))
    Local $Xa, $Ya, $Xb, $Yb, $Xc, $Yc
    $Xa = $iArrowX - $iArrowBase * Cos($iAngle)
    $Ya = $iArrowY - $iArrowBase * Sin($iAngle)
    $Xb = $iArrowX + $iArrowBase * Cos($iAngle)
    $Yb = $iArrowY + $iArrowBase * Sin($iAngle)
    $Xc = $iArrowX + $iArrowLength * Sin($iAngle)
    $Yc = $iArrowY - $iArrowLength * Cos($iAngle)
    _GDIPlus_GraphicsDrawLine($hGraphics, $Xa, $Ya, $Xb, $Yb, $hPen)
    _GDIPlus_GraphicsDrawLine($hGraphics, $Xa, $Ya, $Xc, $Yc, $hPen)
    _GDIPlus_GraphicsDrawLine($hGraphics, $Xb, $Yb, $Xc, $Yc, $hPen)
    _GDIPlus_GraphicsDrawLine($hGraphics, $iX1, $iY1, $iArrowX, $iArrowY, $hPen)
EndFunc;==>_GDIplus_GraphicsDrawArrow

Func _AntiAlias($hGraphics, $iMode)
    Local $aResult = DllCall($__g_hGDIPDll, "int", "GdipSetSmoothingMode", "hwnd", $hGraphics, "int", $iMode)
    If @error Then Return SetError(@error, @extended, False)
    Return SetError($aResult[0], 0, $aResult[0] = 0)
EndFunc;==>_AntiAlias

Func close()
    Exit
EndFunc;==>close

Func _ATan2($nY, $nX)
    Return SetError(0, 0, ATan($nY / $nX) + ((($nY <= 0) And ($nX < 0)) + (($nY > 0) And ($nX < 0)) - 2 * (($nY < 0) And ($nX < 0))) * 3.14159265358979323846)
EndFunc;==>_ATan2




本文固定链接: http://www.jianyiit.com/post-407.html

blogger
该日志由 绿色风 于2022-8-2 5:25 Tuesday发表在 源码示例 分类下。
版权所有:《绿色风's Blog》 → 《GDI+示例1》;
除特别标注,本博客很多文章均为原创. 互联分享,尊重版权,转载请以链接形式标明本文地址;
本文标签:

扫描二维码,在手机上阅读
上一篇::GDI+示例2
下一篇:设置PIC控件,直接加载网络中的图片

热门文章

相关文章

  • 用API判断电脑是否联网
  • 黑客帝国特效
  • AU3小游戏 - 撸杆过桥
  • AU3剪切板复制图片
  • Au3按钮上带图片
取消回复

发表评论

亲,头像对么?

88 + 22 =

提交中,请稍候……


木有头像就木JJ啦!还木有头像吗?点这里申请属于你的个性Gravatar头像吧!


    站点统计
    • 运行时间: 20254 天
    • 日志总数: 365 篇
    • 评论数量: 7221 条
    • 微语数量: 6 条
    • 附件总量: 388 件
  • 逝出的青春

  • 打赏"绿色风"



      扫码关注本站公众号 可搜本站内容

  • Autoit V3 脚本交流群

      常驻群1:905774875
      常驻群2:40672266


  • 链接

    • AU3中文论坛
    • Excel资料库
    • 完美者博客
    • 顺网小哥'S Blog
    • 猛牛哥的博客
    • 网吧系统下载
  • 分类

    • 流●年(66)
    • 笔●记(0)
    • 脚●本(0)
    • 作品(21)
    • 学习随记(51)
    • 源码示例(68)
    • UDF(收集)(26)
    • 工作室UDF(30)
    • 工具●教程(62)
    • 教程之GDI(24)
Copyright © 2013 绿色风's Blog. Powered by emlog. Theme by 射雕天龙. 鄂ICP备2021011689号-1 鄂公网安备42102302000078号 sitemap