找回密码  加入

AUTOIT CN

搜索
查看: 169|回复: 5

[GUI管理] [已解决]如何将“GDI+”绘制的图形保存到文件?

[复制链接]
发表于 2019-1-4 13:53:11 | 显示全部楼层 |阅读模式
本帖最后由 jianganew 于 2019-1-7 16:51 编辑

请教各位,如何将“GDI+”绘制的图形保存到文件?_GDIPlus_ImageSaveToFile不行。

  1. #include <GDIPlus.au3>
  2. #include <GUIConstantsEx.au3>

  3. Example()

  4. Func Example()
  5.     _GDIPlus_Startup() ;初始化 GDI+
  6.     Local Const $iWidth = 600, $iHeight = 600, $iBgColor = 0x303030 ; $iBgColor 背景颜色格式: RRGGBB

  7.     Local $hGUI = GUICreate("GDI+ 示例 (" & @ScriptName & ")", $iWidth, $iHeight) ;创建一个测试 GUI
  8.     GUISetBkColor($iBgColor, $hGUI) ;设置 GUI 的背景颜色
  9.     GUISetState(@SW_SHOW)

  10.     Local $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) ;在句柄指定的窗口创建图形对象
  11.     _GDIPlus_GraphicsSetSmoothingMode($hGraphics, $GDIP_SMOOTHINGMODE_HIGHQUALITY) ;设置图形对象渲染质量(抗锯齿)
  12.     Local $hPen = _GDIPlus_PenCreate(0xFFABCDEF, 4) ;颜色格式 AARRGGBB (十六进制)

  13.     _GDIPlus_GraphicsDrawEllipse($hGraphics, 10.5, 50.1, 580.25, 500.75, $hPen)
  14.         
  15.       ;_GDIPlus_ImageSaveToFile($hGUI, @ScriptDir & "\1.bmp")
  16.         
  17.     Do
  18.     Until GUIGetMsg() = $GUI_EVENT_CLOSE

  19.     ;清理 GDI+ 资源
  20.     _GDIPlus_PenDispose($hPen)
  21.     _GDIPlus_GraphicsDispose($hGraphics)
  22.     _GDIPlus_Shutdown()
  23.     GUIDelete($hGUI)
  24. EndFunc   ;==>Example
复制代码


发表于 2019-1-4 15:53:37 | 显示全部楼层
本帖最后由 水木子 于 2019-1-4 15:56 编辑

_GDIPlus_ImageSaveToFile  肯定可以啊!
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>

_GDIPlus_Startup()
Local Const $iWidth = 600, $iHeight = 600, $iBgColor = 0xFFEE88BB

$hGui = GUICreate('', $iWidth, $iHeight)
GUISetState()

$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGui)
$hGraphics = _GDIPlus_BitmapCreateFromGraphics($iWidth, $iHeight, $hGraphic)
$hGfxCtxt = _GDIPlus_ImageGetGraphicsContext($hGraphics)
_GDIPlus_GraphicsSetSmoothingMode($hGfxCtxt, $GDIP_SMOOTHINGMODE_HIGHQUALITY)
$hPen = _GDIPlus_PenCreate(0xFFABCDEF, 4)
$hBrush = _GDIPlus_BrushCreateSolid($iBgColor)

_GDIPlus_GraphicsFillRect($hGfxCtxt, 0, 0, $iWidth, $iHeight, $hBrush)
_GDIPlus_GraphicsDrawEllipse($hGfxCtxt, 10.5, 50.1, 580.25, 500.75, $hPen)
_GDIPlus_GraphicsDrawImage($hGraphic, $hGraphics, 0, 0)

_GDIPlus_ImageSaveToFile($hGraphics, @ScriptDir & '\1.bmp')

Do
Until GUIGetMsg() = -3

_GDIPlus_PenDispose($hPen)
_GDIPlus_BrushDispose($hBrush)
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_GraphicsDispose($hGfxCtxt)
_GDIPlus_BitmapDispose($hGraphics)
_GDIPlus_Shutdown()







 楼主| 发表于 2019-1-7 16:49:22 | 显示全部楼层
多谢水版,已OK 。
 楼主| 发表于 2019-1-7 16:49:42 | 显示全部楼层
多谢水版,已OK 。
发表于 5 天前 | 显示全部楼层
路过赞金币!
发表于 5 天前 | 显示全部楼层
刚碰到需要这方面的代码,真是巧,多谢了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2019-1-19 17:27 , Processed in 0.091283 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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