Что нового

[Графика GDIPlus] Поворот изображения.

Ganibal95

GreenBytes
Сообщения
877
Репутация
240
Всем привет :smile:.
Нужно картинку повернуть вот так примерно.
5949.05760398538.png

Изначально картинка была такая:
2092.58435459952.png

Заранее спасибо.


Добавлено:
Сообщение автоматически объединено:

Ну и так чтоб можно было поворачивать:smile:
1593.49505970644.png


картинки эти нужно сохранять в файл.
 
Автор
Ganibal95

Ganibal95

GreenBytes
Сообщения
877
Репутация
240
Много кто хочет, а ответа нормального нет.
 
Автор
Ganibal95

Ganibal95

GreenBytes
Сообщения
877
Репутация
240
OffTopic:

Спустя 10 лет.


Слушайте, а такое вообще на AutoIt возможно??? :stars:
Целый день сижу, жду, F5 уже замучил.
 

ArtInt

Знающий
Сообщения
135
Репутация
18
На AutoIt это сделать тяжело, ИМХО.
Ну, на VBA можно сделать. Практиковал такую фичу - делал pps презентацию, а потом AutoIt создавал ini файл с параметрами, и запускал презентацию. Скрипт внутри неё читал параметры, и выполнял работу.
 

Arei

Скриптер
Сообщения
938
Репутация
115
это хорошо, но желательно на AutoIt.
 

StarEdik

Новичок
Сообщения
365
Репутация
4
Ganibal95
Привет .
Вот скрипт,как вариант для вас .(скрипт предложил Zaramot ). Я его чуточку для своего нужды изменил. В скрипте сделайте цикл для параметра $Q от 2 до 100 (Горизонталь), а для $V=2 (Вертикал).
А потом на оборот. Дальше для обоих. Ну там вам виднее будет, наверно сами разберетесь.

Код:
;Coded by UEZ 2010-01-10
#include <GDIplus.au3>
Opt("GUIOnEventMode", 1)

_GDIPlus_Startup()
Global $load_foreground = _GDIPlus_BitmapCreateFromFile(@ScriptDir & "\1.jpg")
Global $width =680; _GDIPlus_ImageGetWidth($load_background)
Global $height =680; _GDIPlus_ImageGetHeight($load_background)

Global $dx = 680; _GDIPlus_ImageGetWidth($load_foreground)
Global $dy = 680; _GDIPlus_ImageGetHeight($load_foreground)

Global $hWnd = GUICreate("GDI+: Example by UEZ", $width, $height);, -1, -1, Default)
GUISetOnEvent(-3, "_Exit")
GUISetState()

Global $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hWnd)
Global $hBitmap = _GDIPlus_BitmapCreateFromGraphics($width, $height, $hGraphics)
Global $hBackbuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)

Global $hFGBitmap = _GDIPlus_BitmapCreateFromGraphics($dx, $dy, $hGraphics)
Global $hFGBackbuffer = _GDIPlus_ImageGetGraphicsContext($hFGBitmap)

Global $hMatrix = _GDIPlus_MatrixCreate()
_GDIPlus_MatrixTranslate($hMatrix, $dx/2 , $dy/2 )

Global $FG_x = 150
Global $FG_y = 150

Global $V = 2 ; 2 ; 2 ; 2 ; 2 ; 2 ;; 2 ; 35 ; 62 ; 74 ; 96
Global $Q = 2 ; 35 ; 62 ; 74 ; 96 ;; 2 ; 2 ; 2 ; 2 ; 2 ; 2 
While Sleep(100)

	_GDIPlus_GraphicsSetTransform($hFGBackbuffer, $hMatrix)
	_GDIPlus_GraphicsDrawImage($hFGBackbuffer, $load_foreground, -$dx /2, -$dy/2)

	_GDIPlus_GraphicsDrawImageRect($hBackbuffer, $hFGBitmap, $FG_x, $FG_y, $dx/$V, $dy/$Q) ;copy foreground backbuffer to main backbuffer
    _GDIPlus_GraphicsDrawImageRect($hGraphics, $hBitmap, 0, 0, $width, $height) ;copy full drawn image to main screen

WEnd

Func _Exit()
	_GDIPlus_BitmapDispose($hFGBitmap)
	_GDIPlus_GraphicsDispose($hFGBackbuffer)
	_GDIPlus_MatrixDispose($hMatrix)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_GraphicsDispose($hBackbuffer)
    _GDIPlus_GraphicsDispose($hGraphics)
    _GDIPlus_Shutdown()
    Exit
EndFunc
 
Автор
Ganibal95

Ganibal95

GreenBytes
Сообщения
877
Репутация
240
StarEdik
вы бы пример проверили.
Он не работает на 2х ОС. :stars:
 
Автор
Ganibal95

Ganibal95

GreenBytes
Сообщения
877
Репутация
240
Исправил пример,
по моему это ПРИПЛЮСОВЫВАНИЕ изображения.
 
Автор
Ganibal95

Ganibal95

GreenBytes
Сообщения
877
Репутация
240
А теперь видишь разницу скринов в шапке и твоих !?
 

Arei

Скриптер
Сообщения
938
Репутация
115
Просто нужно не сжимать, а поворачивать изображение на определённый угл.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Все это можно сделать с помощью _GDIPlus_Matrix... функций (см. GDIPlus + GDIP UDFs).
 
Автор
Ganibal95

Ganibal95

GreenBytes
Сообщения
877
Репутация
240
Yashied
Я пробовал, но у меня не получалось. :stars:
 

Arei

Скриптер
Сообщения
938
Репутация
115
Yashied могли бы показать пример с картинкой?
 
Верх