Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2007.11.18;
Скачать: [xml.tar.bz2];

Вниз

Работа с 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 вся ветка

Форум: "Media";
Текущий архив: 2007.11.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 5.876 c
2-1193214133
Alex8
2007-10-24 12:22
2007.11.18
TDBLookupComboBox


15-1192011879
maverik
2007-10-10 14:24
2007.11.18
Библиотека для проигрывателя


15-1192712579
фыва
2007-10-18 17:02
2007.11.18
FastReport


2-1193467708
VladimirK
2007-10-27 10:48
2007.11.18
Экспорт в MS Excel


2-1193342506
Цукор5
2007-10-26 00:01
2007.11.18
сравнение двух TDateTime ???





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский