Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.18;
Скачать: CL | DM;

Вниз

Работа с SetWorldTransform   Найти похожие ветки 

 
Jimmy   (2007-01-22 09:49) [0]

1. Почему-то SetWorldTransform не работает с растровой канвой. Это нормально? Если да, то нет ли аналога этой команды для Bitmap.Canvas?
2. После того, как я нарисовал повернутый эллипс с помощью SetWorldTransform, как мне вернуть канву в нормальное состояние, отменить действие SetWorldTransform?
3. Где можно найти описание этой и похожих команд, там вроде есть еще какие-то ModifyWorldTransform, SetWorldTransform и т.д.
Заранее спасибо!


 
MBo ©   (2007-01-22 10:00) [1]

1  Что такое растровая канва???

2. Установить единичную матрицу преобразования SetWorldTransform или
ModifyWorldTransform с MWT_IDENTITY

3. в хелпе WinSDK и в MSDN


 
Jimmy   (2007-01-22 10:17) [2]

С пунктом 2 все получилось. Спасибо! Пункт 1: как нарисовать повернутый эллипс на bitmap.canvas?


 
MBo ©   (2007-01-22 13:24) [3]

>Пункт 1: как нарисовать повернутый эллипс на bitmap.canvas?
Точно так же, как и на других Canvas


 
Jimmy   (2007-01-22 18:41) [4]

На MetaFileCanvas эллипс поворачивается с помощью SetWorldTransform, на Bitmap.Canvas - нет. А должно?


 
@!!ex ©   (2007-01-22 22:59) [5]

Нет. Не должно.
Напиши свою реализацию SetWorldTransform.
Это вообще не стандартная функция, насколько мне известно.
Тока учти, что в векторной графике повернуть изображение - плюнуть и растереть.
Повернуть же кэнвас - довольно сложная и медленная операция, хотя тоже реализуемая.


 
MBo ©   (2007-01-23 07:11) [6]

>А должно?
конечно


procedure TForm18.Button1Click(Sender: TObject);
var
 b: TBitmap;
 xf: TXForm;
begin
 xf.eM11 := 0.7;
 xf.eM12 := -0.7;
 xf.eM21 := 0.7;
 xf.eM22 := 0.7;
 xf.eDx := -50;
 xf.eDy := 100;
 b := TBitmap.Create;
 b.Width := 200;
 b.Height := 200;
 SetGraphicsMode(b.Canvas.Handle, GM_ADVANCED);
 SetWorldTransform(b.Canvas.Handle, xf);
 b.Canvas.Ellipse(30, 60, 170, 140);
 ModifyWorldTransform(b.Canvas.Handle, xf, MWT_IDENTITY);
 Canvas.Draw(0, 0, b);
 b.Free;
end;


 
Jimmy   (2007-01-25 18:48) [7]

И вновь большое спасибо! Все получилось, у меня не хватало команды SetGraphicsMode.
Только вот еще одна проблемка: если picture с повернутым эллипсом сохранить в wmf-файле, то после открытия в CorelDraw эллипс превращается в "объект, состоящий из черточек, напоминающий эллипс". Можно ли этого избежать? Хотелось бы чтоб всеже Corel смотрел на эллипс именно как на эллипс.


 
MBo ©   (2007-01-25 19:22) [8]

В emf сохраняй, а про корел ничего не скажу...



Страницы: 1 вся ветка

Текущий архив: 2007.11.18;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.02 c
11-1177518640
vofk
2007-04-25 20:30
2007.11.18
Unicode, RichEdit


2-1193295581
Странник81
2007-10-25 10:59
2007.11.18
Можно ли..


15-1192215230
oxffff
2007-10-12 22:53
2007.11.18
Danny Thorpe покидает Microsoft. Вот это да!!!


15-1192155645
Slider007
2007-10-12 06:20
2007.11.18
С днем рождения ! 12 октября 2007 пятница


6-1174461193
Pavel Kuznecov
2007-03-21 10:13
2007.11.18
"Байтовую" строку в последовательность $FF