Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/14: Рейтинг темы: голосов - 14, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 19.05.2019
Сообщений: 7

Создание фигур в dll

06.06.2019, 14:02. Показов 2738. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть задание:
1) Функция y=x*x, х берем из edit1
2) В dll библиотеке написать код "если y>20, то на форме рисуется красный прямоугольник"
3) Вызвать функцию в button1click

Совершенно не понимаю как в dll можно реализовать подобный код. Где ни будь вообще существуют примеры, как через dll можно нарисовать фигуру?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.06.2019, 14:02
Ответы с готовыми решениями:

Создание изображений в виде мелких фигур, изменение размера мелких фигур
Здравствуйте!Как создать изображение в виде кружков или других фигур? Как изменить размер мелких фигур не меняя размера картинке?

Создание .dll и присоеденение .dll к проекту путем непосредственного написания кода
Здравствуйте, дорогие форумчане! Я прекрасно знаю, как создавать и прикреплять к проекту .dll файлы при помощи опций компилятора в Visual...

Создание фигур
Коллеги , всем привет . У меня к вам вопрос ! Мне одна компания прислала задание . А именно . Вычислить площадь фигуры ,без знания типы...

12
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
06.06.2019, 14:31
Так в dll нужно только функцию y=x*x описать, а в программе по вызову этой функции рисовать или не рисовать.
1
0 / 0 / 0
Регистрация: 19.05.2019
Сообщений: 7
06.06.2019, 14:36  [ТС]
Эм, нет? Мне нужно что бы код рисования фигуры был именно в dll, если это вообще возможно
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
06.06.2019, 14:53
Лучший ответ Сообщение было отмечено Olivine как решение

Решение

Напиши так
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
library risunok;
uses
  SysUtils,
  Classes,
  Graphics;
 
{$R *.res}
procedure rect(x:integer;cv:TCanvas);
begin
if x*x>20 then
 begin
  cv.Pen.Color:=clRed;
  cv.Pen.Width:=3;
  cv.Rectangle(100,100,250,200);
 end;
end;
exports rect;
begin
end.
Добавлено через 1 минуту
В программе вызывать вместо cv Form1.Canvas.
1
0 / 0 / 0
Регистрация: 19.05.2019
Сообщений: 7
06.06.2019, 15:07  [ТС]
Выдает ошибку "Declaration expected but identifier "Graphics" found"
И кучу других ошибок на самом деле

Мы вообще можем объявлять процедуры в dll? Я с таким почти не встречалась.
0
Модератор
4138 / 2351 / 809
Регистрация: 15.11.2015
Сообщений: 9,396
06.06.2019, 15:09
Конечно можем! DLL для этого и предназначена, чтобы там были процедуры, которыми могут пользоваться несколько программ.
1
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
06.06.2019, 15:09
Можем хоть функции хоть процедуры, у меня эта dll работает. Почитайте внимательно про создание dll.
1
Модератор
4138 / 2351 / 809
Регистрация: 15.11.2015
Сообщений: 9,396
06.06.2019, 15:12
Цитата Сообщение от Olivine Посмотреть сообщение
Выдает ошибку "Declaration expected but identifier "Graphics" found"
Запятую надо ставить после Graphics.
1
0 / 0 / 0
Регистрация: 19.05.2019
Сообщений: 7
06.06.2019, 15:14  [ТС]
Спасибо. Дело было в грамматической ошибке (впрочем, ничего нового).
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
06.06.2019, 15:19
Вот на скору руку написал, работает, правда после выполнения какую-то ошибку с памятью выдает.
Вложения
Тип файла: zip 123.zip (388.1 Кб, 3 просмотров)
0
Модератор
4138 / 2351 / 809
Регистрация: 15.11.2015
Сообщений: 9,396
06.06.2019, 20:07
Лучший ответ Сообщение было отмечено Puporev как решение

Решение

Почему-то ошибка выходит, когда передаётся Canvas. Тогда надо передавать DC, там нет ошибок.

Вот библиотека с использованием DC:
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
library risunok;
 
uses
  Windows, SysUtils, Classes, Graphics, Dialogs;
 
{$R *.res}
 
procedure rect1(x: integer; DC: THandle);
var
  pent, pen1: THandle;
begin
  if x*x > 20 then begin
    pen1 := CreatePen(PS_SOLID, 3, clRed);
    pent := SelectObject(DC, pen1);
    Rectangle(DC, 100, 100, 250, 200);
    SelectObject(DC, pent);
    DeleteObject(pen1);
  end else
    ShowMessage('Значение x^2 не больше 20');
end;{}
 
exports
  rect1;
 
begin
 
end.
И программа, использующая эту библиотеку:
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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    PaintBox1: TPaintBox;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
procedure rect1(x: integer; DC: THandle); external 'risunok.dll';
 
procedure TForm1.Button1Click(Sender: TObject);
var
  x: integer;
begin
  x := StrToInt(Edit1.Text);
  rect1(x, PaintBox1.Canvas.Handle);
end;
 
end.
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
06.06.2019, 21:06
AzAtom, Спасибо. Я тоже так подумал когда почитал, но нет ни толку, ни желания.
0
Модератор
4138 / 2351 / 809
Регистрация: 15.11.2015
Сообщений: 9,396
06.06.2019, 21:12
Puporev, у меня тоже первая мысль была передать Canvas и не париться, но лень было проверять.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.06.2019, 21:12
Помогаю со студенческими работами здесь

создание фигур
создать фигуры треугольник, квадрат и прямоугольник, используя класс точка, фигуры вывести на экран mfc, помогите пожалуйсто с классом...

Создание фигур
Добрый день! Вопрос таков: нужно в Image с помощью mousemove, mousedown, mouseup создавать растягиванием несколько кругов и квадратов. ...

Создание dll на C++ и вызов метода dll из C#.
Народ, может кто-нибудь выложить конкретный пример, как это сделать? Например есть же нативная библиотека bass.dll, для неё есть обёртка...

Создание фоновый фигур
Здравствуйте, подскажите пожалуйста, как можно создать такой эффект?

Тетрис. Создание фигур
Привет, пишу тетрис (да, я сама оригинальность..) Имею пока 1 фигуру (квадрат) public class Block { public Block(int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru