Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 901

/ вопрос открыт /

О Мудрейшие из Мудрейших! Как мне нарисовать в форме (или в Image) графический примитив: прямую, прямоугольник или что-то в этом роде?
Зарание прошу прощения за такой тупой вопрос!

Примечание #1 (14 сентября 2008, 20:11):
Дело в том,что прописывая графические примитивы(линия, прямоугольник и тп) призапуске программы они не отображаются!

Ученый Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Ученый (статус: 8-ой класс)
Вопрос отправлен: 14 сентября 2008, 19:42
Состояние вопроса: открыт, ответов: 2.

Ответ #1. Отвечает эксперт: Аксион

Здравствуйте, Ученый!
У form, image и некоторых других компонентов делфи есть свойство canvas, с помощью него можно нарисовать всё что угодно, вот несколько примеров:
-----------------
.Canvas.Pen.Color:=clred; //устанавливает цвет кисти на крассный
-----------------
.Canvas.MoveTo(5,5);
.Canvas.LineTo(15,15); //эти две строи рисуют линию из точек с координатами (5,5) в (15,15)
-----------------
.Canvas.Rectangle(х,у,х2,у2); //рисует квадрат, координаты (х,у) и (х2,у2) указывают диагоняль квадрата
----------------
.Canvas.Pixels(x,y); // рисует точку с координатами (х,у)
-----------------
Так же у канваса есть свойство Brush, которое устанавливает тип и цвет заливки
.Canvas.Brush.collor:=clred //цвет заливки будет красным
.Canvas.Brush.stule:=bsDiagCross //заливка будет "крестовой"
Ну, а дальше сами разберётесь...

Ответ отправил: Аксион (статус: 4-ый класс)
Время отправки: 14 сентября 2008, 20:13
Оценка за ответ: 4

Ответ #2. Отвечает эксперт: ANBsoft

Здравствуйте, Ученый!
В зависимости от того что Вам нужно, можно использовать компонент TShape, или рисовать по канве, как описал предыдущий оратор.
Дополню следующее, если Вы рисуете на канве формы, то это будет видно до следующей перерисовки формы, поэтому для того чтобы отрисованное было видно всегда, обрабатывайте событие OnPain и отрисовывайте в нем.
Успехов.

Ответ отправил: ANBsoft (статус: Студент)
Время отправки: 14 сентября 2008, 20:25
Оценка за ответ: 2


Мини-форум вопроса

Всего сообщений: 24; последнее сообщение — 15 сентября 2008, 14:30; участников в обсуждении: 5.

Страницы: [1] [2] [Следующая »]

Аксион

Аксион (статус: 4-ый класс), 14 сентября 2008, 20:16 [#1]:

http://shiva16.narod.ru/Unit24.htm вот ещё почитайте....
Ученый

Ученый (статус: 8-ой класс), 14 сентября 2008, 20:24 [#2]:

Слушай, Блазер! Проблема втом, что прописывая через canvas при запуске ничего не отображается, выходит пустая форма! Не мог бы скинуть полнусть код какого нибудь примитива!
Аксион

Аксион (статус: 4-ый класс), 14 сентября 2008, 20:25 [#3]:

а форма пустая?
Ученый

Ученый (статус: 8-ой класс), 14 сентября 2008, 20:28 [#4]:

Да! Форма пустая!
ANBsoft

ANBsoft (статус: Студент), 14 сентября 2008, 20:31 [#5]:

Перенеси отрисовку в событие OnPaint
Аксион

Аксион (статус: 4-ый класс), 14 сентября 2008, 20:32 [#6]:

Вот пример:
http://narod.ru/disk/2592167000/%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80.rar.html
Аксион

Аксион (статус: 4-ый класс), 14 сентября 2008, 20:33 [#7]:

А где отрисовка то стоит? В онкриэйт чтоли?
Аксион

Аксион (статус: 4-ый класс), 14 сентября 2008, 20:35 [#8]:

Прощу прощения в FormCreate, если там то есстественно отрисовыватся не будет...Перенеси в OnPaint как сказал Бубырь Александр Николаевич
Ученый

Ученый (статус: 8-ой класс), 14 сентября 2008, 20:41 [#9]:

Блазер! На счет примера все понятно! Но есть одно но: нада ножать на кнопку! А как Сделать так чобы без кнопки сразу появлялось нарисованное?
Ученый

Ученый (статус: 8-ой класс), 14 сентября 2008, 20:44 [#10]:

Я конечно сильно извеняюсь, ноя в этом деле даже менше чем новичек! Объясните что такое FormCreate,OnPain и с чем их едят?
Ученый

Ученый (статус: 8-ой класс), 14 сентября 2008, 21:03 [#11]:

Вот посмотрите как я делаю! В чем ошибка?

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;

type
TForm1 = class(TForm)
procedure FormPaint(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.FormPaint(Sender: TObject);
begin
Form1.Canvas.Rectangle (10,10,100,100);
end;

end.
Вадим К

Вадим К (статус: Академик), 14 сентября 2008, 21:14 [#12]:

А что же не работает? специально скомпилировал и запустил - есть черный прямоугольник. Что же не работает?
Галочка "подтверждения прочтения" - вселенское зло.
Ученый

Ученый (статус: 8-ой класс), 14 сентября 2008, 21:16 [#13]:

Да вы что а у меня пустая форма! Ни какого прямоугольника нет!
Вадим К

Вадим К (статус: Академик), 14 сентября 2008, 21:21 [#14]:

у меня есть. Странно. есть правда одно предположение, что делфи глюканула. Можно проверить так - поставить кнопку на форму и запустить. Если не появиться - значит глюканула. Если появиться - тогда глюк в другом месте.
Галочка "подтверждения прочтения" - вселенское зло.
Ученый

Ученый (статус: 8-ой класс), 14 сентября 2008, 21:27 [#15]:

С кнопкой идет!
Ученый

Ученый (статус: 8-ой класс), 14 сентября 2008, 21:29 [#16]:

А без кнопки не появляется!
Вадим К

Вадим К (статус: Академик), 14 сентября 2008, 21:34 [#17]:

код для кнопки никакой не пишем?
То есть, просто поставив кнопку на форму и прописав OnPaint указанную выше строку, имеем нужный результат (прямоугольник)?
Галочка "подтверждения прочтения" - вселенское зло.
Ученый

Ученый (статус: 8-ой класс), 14 сентября 2008, 21:41 [#18]:

Если код не пишем-ниче не появляется! если пишем:

procedure TForm1.Button1Click(Sender: TObject);
begin
form1.Canvas.Pen.Color:=clred;
form1.Canvas.MoveTo(100,100);
form1.Canvas.LineTo(200,200);
end;
- тогда появляется!
Вадим К

Вадим К (статус: Академик), 14 сентября 2008, 21:43 [#19]:

Вот этот код надо перенести в OnPaint и должно (обязано) работать.
Галочка "подтверждения прочтения" - вселенское зло.
Ученый

Ученый (статус: 8-ой класс), 14 сентября 2008, 21:48 [#20]:

Ввожу:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;

type
TForm1 = class(TForm)
procedure FormOnPaint(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.FormOnPaint(Sender: TObject);

begin
form1.Canvas.Pen.Color:=clred;
form1.Canvas.MoveTo(100,100);
form1.Canvas.LineTo(200,200);
end;


end.
А результата нет!

Страницы: [1] [2] [Следующая »]

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:47
Выполнено за 0.02 сек.