找回密码
 加入
搜索
查看: 4903|回复: 3

[图形处理] (已解决)自订函数在打印文本的时候可以旋转角度,如何在打印图形的时候也旋转角度呢?

[复制链接]
发表于 2013-5-23 16:41:15 | 显示全部楼层 |阅读模式
本帖最后由 scorpio1102 于 2013-6-21 03:44 编辑

_PrintText($hDll, $sText, $ix = -1, $iy = -1, $iAngle = 0)
以上第5个参数可以控制角度
_PrintImage($hDll, $sImagePath, $TopX, $TopY, $wid, $ht)
以上函数不能控制旋转角度,请教老师傅有哪个函数能控制图形打印的时候旋转吗?

以下为老大写的代码貌似能旋转但是只想在打印的时候旋转,不想保存的图像也旋转.
说的简单点就是如何直接打印图像而不使用printimage函数提取已经保存的图像来打印.

Func _GDIPlus_ImageRotateToSave($sPicPath, $sNewName)
        _GDIPlus_Startup()
        Local $hImage = _GDIPlus_ImageLoadFromFile($sPicPath)
        DllCall($ghGDIPDll, 'uint', 'GdipImageRotateFlip', 'hwnd', $hImage, 'int', 2)
        _GDIPlus_ImageSaveToFile($hImage, $sNewName)
        _GDIPlus_ImageDispose($hImage)
        _GDIPlus_Shutdown()
EndFunc   ;==>_GDIPlus_ImageRotateToSave

DllCall($ghGDIPDll, 'uint', 'GdipImageRotateFlip', 'hwnd', $hImage, 'int', 2) 如何控制旋转角度.此行貌似旋转了180度.

以下是打印函数:
Func _PrintImage($hDll, $sImagePath, $TopX, $TopY, $wid, $ht)
        $vDllAns = DllCall($hDll, 'int', 'Image', 'str', $sImagePath, 'int', $TopX, 'int', $TopY, 'int', $wid, 'Int', $ht)
        If @error = 0 Then Return $vDllAns[0]
        SetError(1)
        Return -1
EndFunc
可不可以修改一下,之后打印旋转90度的图片.或者是其它方法.($simagepath可不可以改为图形对象变量)dllcall这玩意思到底怎么玩.
 楼主| 发表于 2013-6-3 11:13:52 | 显示全部楼层
本帖最后由 scorpio1102 于 2013-6-3 17:37 编辑

旋转90度使用以下方法,(有空出边线勉强能用)
http://www.autoitx.com/forum.php ... hlight=%B7%AD%D7%AA
直接打印的方法还是不知道怎么办,请老大们提供法宝函数.
发表于 2013-6-3 20:49:32 | 显示全部楼层
本帖最后由 Ycxw2008 于 2013-6-3 20:50 编辑

#include <GUIConstantsEx.au3>
#include <GDIPlus.au3>
#include <ScreenCapture.au3>

_Main()

Func _Main()
        Local $hGUI, $hBMP, $hBitmap, $hGraphic

        ; 捕获屏幕的左上角
        $hBMP = _ScreenCapture_Capture("", 0, 0, 400, 300)

        ; 创建 GUI
        $hGUI = GUICreate("GDI+",400,300,200)
        GUISetState()
        $hGUI2 = GUICreate("GDI+",400,300,600)
        GUISetState()

        ; 初始化 GDI+ 库
        _GDIPlus_Startup()

        ; 在 GUI 中描绘位图
        $hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hBMP)
        $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
        _GDIPlus_GraphicsDrawImage($hGraphic, $hBitmap, 0, 0)
        DllCall($ghGDIPDll, 'uint', 'GdipImageRotateFlip', 'hwnd', $hBitmap, 'int', 1);旋转的函数 具体的查下msdn
        $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI2)
        _GDIPlus_GraphicsDrawImage($hGraphic, $hBitmap, 0, 0)

        ; 清理资源
        _GDIPlus_GraphicsDispose($hGraphic)
        _GDIPlus_BitmapDispose($hBitmap)
        _WinAPI_DeleteObject($hBMP)

        ; 关闭 GDI+ 库
        _GDIPlus_Shutdown()

        ; 循环直到用户退出
        Do
        Until GUIGetMsg() = $GUI_EVENT_CLOSE


EndFunc   ;==>_Main
 楼主| 发表于 2013-6-4 09:10:45 | 显示全部楼层
本帖最后由 scorpio1102 于 2013-6-4 09:46 编辑

把1改成2就是90度了,旋转的两个方法算是明白了,但是打印函数_printimage的方法(想直接打印image object)有没办法,问题的初衷就是这个.使用的是坛子里找的的printMGv2.au3t和附带的printmg.dll
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-9 05:00 , Processed in 0.076917 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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