Статьи Королевства Дельфи


А что, Delphi + Corel Draw даже очень ничего. - часть 2


Все ясно? За дело!
Да, чуть не забыл о самом главном - как и у любой системы в Corel Draw есть свои "заморочки" :)

  1. Ноль координат находится в середине листа бумаги (оригинально, правда?)
  2. Положительная ось Y направлено вверх, а X - в право.
  3. Координаты - целые числа в микронах. Для удобства я писал функцию: function CalcX(x_mm:double):longint; begin result := Round(x_mm*10000); end;
  4. Углы не знаю в чем, но 90 градусов надо записать как 90000000. Положительные против часовой стрелки.
  5. Принцип прорисовки таков: создается объект, а затем ему присваиваются различные свойства, такие как цвет, тип заливки, толщина линий и пр. По умолчанию эти значения через автоматизацию выставить нельзя - не поддерживается.
  6. Выше упомянутое наглядно видно на прорисовке текста: CorelDraw.CreateArtisticText( Text, CalcX(X), CalcY(Y)); // создаем текст. X,Y - левый нижний // как видите, нет параметров шрифта, размера и пр. With Font do begin if (Italic) and (Bold) then FSK:=14 else if (Italic) then FSK:=8 else if (bold) then FSK:=13 else FSK:=7; end; CorelDraw.SetCharacterAttributes( 0, 0, Font.Name, FSK, Abs(Font.Size)*10, 0, 0, 0, 0, 0, 1000, 1000, HAlign); // присваиваем атрибуты шрифта. // HAlign имеет значения 1,2,3 - влево, по центру, вправо соответственно ColorToCMYK(Font.Color, C,M,Y,K); // это моя функция для преобразования tColor в составляющие в модели CMYK CorelDraw.StoreColor(2, C,M,Y,K, 0,0,0,0); // создание цвета CorelDraw.ApplyUniformFillColor; // применяем цвет к объекту
  7. Тоже самое относится к трансформации объектов – сперва создаете, а затем изменяете как хотите.
  8. Работают функции для получения информации. CorelDraw.GetSize(XSize, YSize); // получили размеры объекта CorelDraw.MoveObject(0, -YSize); // сдвинули его вниз на свой размер
  9. Можно "проверить" все существующие объекты. За круглым столом спрашивали, как это делается, а делается это так: var ObjID, FirstObjID:longint; begin CorelDraw.SelectAllObjects; CorelDraw.SelectNextObject(true); // true для "захода" в сгруппированный объект FirstObjID := CorelDraw.GetObjectsCDRStaticID; Repeat ... // работа с объектом CorelDraw.SelectNextObject(true); ObjID := CorelDraw.GetObjectsCDRStaticID; Until ObjID = FirstObjID; ...
Вот теперь вроде все. Пишите, если что не понятно.

Грабец Олег





Начало  Назад  Вперед



Книжный магазин