![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с SetWorldTransform [D6, WinXP]
Jimmy © (2007-01-22 09:49:00)1. Почему-то SetWorldTransform не работает с растровой канвой. Это нормально? Если да, то нет ли аналога этой команды для Bitmap.Canvas?
2. После того, как я нарисовал повернутый эллипс с помощью SetWorldTransform, как мне вернуть канву в нормальное состояние, отменить действие SetWorldTransform?
3. Где можно найти описание этой и похожих команд, там вроде есть еще какие-то ModifyWorldTransform, SetWorldTransform и т.д.
Заранее спасибо!
MBo (2007-01-25 19:22:00) [1]В emf сохраняй, а про корел ничего не скажу...
Jimmy (2007-01-25 18:48:00) [2]И вновь большое спасибо! Все получилось, у меня не хватало команды SetGraphicsMode.
Только вот еще одна проблемка: если picture с повернутым эллипсом сохранить в wmf-файле, то после открытия в CorelDraw эллипс превращается в "объект, состоящий из черточек, напоминающий эллипс". Можно ли этого избежать? Хотелось бы чтоб всеже Corel смотрел на эллипс именно как на эллипс.
MBo (2007-01-23 07:11:00) [3]>А должно?
конечно
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;
@!!ex (2007-01-22 22:59:00) [4]Нет. Не должно.
Напиши свою реализацию SetWorldTransform.
Это вообще не стандартная функция, насколько мне известно.
Тока учти, что в векторной графике повернуть изображение - плюнуть и растереть.
Повернуть же кэнвас - довольно сложная и медленная операция, хотя тоже реализуемая.
Jimmy (2007-01-22 18:41:00) [5]На MetaFileCanvas эллипс поворачивается с помощью SetWorldTransform, на Bitmap.Canvas - нет. А должно?
MBo (2007-01-22 13:24:00) [6]>Пункт 1: как нарисовать повернутый эллипс на bitmap.canvas?
Точно так же, как и на других Canvas
Jimmy (2007-01-22 10:17:00) [7]С пунктом 2 все получилось. Спасибо! Пункт 1: как нарисовать повернутый эллипс на bitmap.canvas?
MBo (2007-01-22 10:00:00) [8]1 Что такое растровая канва???
2. Установить единичную матрицу преобразования SetWorldTransform или
ModifyWorldTransform с MWT_IDENTITY
3. в хелпе WinSDK и в MSDN