Форум программистов, компьютерный форум, киберфорум
Newby52
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  

GDI+ Как создать любую фигуру, как единый объект

Запись от Newby52 размещена 06.06.2022 в 02:42
Показов 916 Комментарии 3

При необходимости создать практически любую фигуру, как единый объект, для последующего экспорта в векторную графику.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
unit Unit5;
 
interface
 
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Buttons;
 
type
  TForm5 = class(TForm)
    BitBtn1: TBitBtn;
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form5: TForm5;
 
implementation
 
{$R *.dfm}
 
procedure TForm5.BitBtn1Click(Sender: TObject);
const drawemf:array [0..169] of integer=(08,01,06,02,04,03,03,04,02,06,01,08,01,12,02,14,
        03,16,04,17,06,18,08,19,12,19,14,18,16,17,17,16,18,14,19,12,19,08,18,06,17,04,16,
        03,14,02,12,01,-1,-1,08,03,07,04,06,04,04,06,04,07,03,08,03,12,04,13,04,14,06,16,
        07,16,08,17,12,17,13,16,14,16,16,14,16,13,17,12,17,08,16,07,16,06,14,04,13,04,12,
        03,-1,-1,10,10,03,10,10,09,03,09,10,08,03,08,10,07,04,07,10,06,04,06,10,05,05,05,
        10,04,06,04,10,03,-1,-1,10,10,17,10,10,11,17,11,10,12,17,12,10,13,16,13,10,14,16,
        14,10,15,15,15,10,16,14,16,10,17,-1,-1,-2,-2,00,00,00,00);
var PSA:array [0..100] of TPoint;
    PPA:array [0..10] of integer;
    Dc:HDc;j,ns,n,nb,x1,y1:integer;
begin
Dc:=Canvas.Handle;
n:=0;ns:=0;nb:=0;
for j:=0 to 100 do
   begin
   x1:=drawemf[j*2];
   y1:=drawemf[j*2+1];
   if x1=-2 then break;
   if x1=-1 then
      begin
      PPA[nb]:=n;inc(nb);n:=0;
      continue;
      end;
   PSA[ns].X:=100+x1-10;PSA[ns].Y:=100+y1-10;inc(n);inc(ns);
   continue;
   end;
PolyPolyGon(dc,PSA,PPA,nb);
end;
 
end.
Миниатюры
Нажмите на изображение для увеличения
Название: Screenshot_5.png
Просмотров: 185
Размер:	26.0 Кб
ID:	7582  
Изображения
 
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 3
Комментарии
  1. Старый комментарий
    Где в коде GDI+?
    Если речь про PolyPolyGon то это GDI (без плюс). https://docs.microsoft.com/en-... olypolygon
    Запись от locm размещена 06.06.2022 в 17:22 locm вне форума
  2. Старый комментарий
    Аватар для Пытливый
    Все несколько сложнее и не ограничивается только координатами и линиями. Кроме этого там еще используются кривые Безье, ну а что-бы отличить перемещение в координату от кривой или линии ведется параллельно еще и массив операций. И вот тогда у вас при рисовании круга будет круг, а не шестеренка
    Запись от Пытливый размещена 07.06.2022 в 16:16 Пытливый вне форума
  3. Старый комментарий
    Аватар для Newby52
    Цитата Сообщение от Пытливый
    Все несколько сложнее и не ограничивается только координатами и линиями. Кроме этого там еще используются кривые Безье, ну а что-бы отличить перемещение в координату от кривой или линии ведется параллельно еще и массив операций. И вот тогда у вас при рисовании круга будет круг, а не шестеренка
    Цель в том, чтобы фигура появлялась в wmf-файле, как один объект. Если это делать окружностями, кривыми Безье, то получится вот так:
    https://cloud.mail.ru/public/NxnX/mcJxuYqii
    А это никому не нужно.
    Если знаете, как это сделать по-другому - подскажите.
    Чтобы было понятно - схема рисуется (по выбору оператора) либо на канвасе PaintBox, либо на канвасе TMetaFile. В первом случае оператор просто смотрим схему, в другом он её экспортирует в wmf, и в дальнейшем работает с ней Surfer-ом, Acad-ом, ArcGis-ом... короче, чем хочет.
    Запись от Newby52 размещена 08.06.2022 в 04:17 Newby52 вне форума
 
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru