Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.08.2010, 06:10   #1
AlexDn
Пользователь
 
Регистрация: 02.10.2009
Сообщений: 93
По умолчанию Графика в Delphi

Нужно сделать небольшой чертёж в делфи.. с графикой раньше вообще не работал /только в паскале/, подскажите плиз, какой компонент нужно использовать, чтобы в нём нарисовать несколько линий..?
AlexDn вне форума Ответить с цитированием
Старый 06.08.2010, 06:34   #2
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

Цитата:
Сообщение от AlexDn Посмотреть сообщение
Нужно сделать небольшой чертёж в делфи.. с графикой раньше вообще не работал /только в паскале/, подскажите плиз, какой компонент нужно использовать, чтобы в нём нарисовать несколько линий..?
Image из вкладки Advanced..

А так, на Canvas'е можно рисовать хоть на каком компоненте, единственный минус такого рисования - при потере фокуса канва затирается, а Image - нет.
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Старый 06.08.2010, 06:46   #3
AlexDn
Пользователь
 
Регистрация: 02.10.2009
Сообщений: 93
По умолчанию

из вкладки Additional, насколько я понял..? и как там реализовать хоть что-то?
image1.line(30,30,60,60);..?
AlexDn вне форума Ответить с цитированием
Старый 06.08.2010, 07:01   #4
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

Цитата:
Сообщение от AlexDn Посмотреть сообщение
из вкладки Additional, насколько я понял..? и как там реализовать хоть что-то?
image1.line(30,30,60,60);..?
Да, Additional.. Реализовывать как? За основу возмите положение курсора мыши, если вы ей хотите рисовать.

ПС: чем вас AutoCAD не устраивает?
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Старый 06.08.2010, 10:10   #5
AlexDn
Пользователь
 
Регистрация: 02.10.2009
Сообщений: 93
По умолчанию

Нет, мне нужно рисовать по координатам, что-то вроде чертежа от результатов..
AlexDn вне форума Ответить с цитированием
Старый 06.08.2010, 10:12   #6
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Код:
image1.Canvas.MoveTo(30,30);//откуда будем рисовать
image1.Canvas.LineTo(60,30);// куда будем рисовать
end;
SERG1980 вне форума Ответить с цитированием
Старый 06.08.2010, 11:57   #7
AlexDn
Пользователь
 
Регистрация: 02.10.2009
Сообщений: 93
По умолчанию

Спасибо всем уже начал понемногу разбираться..)
AlexDn вне форума Ответить с цитированием
Старый 07.08.2010, 02:43   #8
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

У Canvas есть "перо"... По умолчанию оно в точке (0,0)...
При вызове LineTo() рисуется линия от точки где перо до указанной в LineTo()... Причём после этого перо перемещается в конечную точку (указанную в LineTo())...
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 07.08.2010, 12:33   #9
Ins
Форумчанин
 
Регистрация: 29.12.2007
Сообщений: 137
По умолчанию

Цитата:
Сообщение от Sparkman Посмотреть сообщение
Image из вкладки Advanced..

А так, на Canvas'е можно рисовать хоть на каком компоненте, единственный минус такого рисования - при потере фокуса канва затирается, а Image - нет.

Потому что рисовать нужно в положенных для этого местах, а именно - в событии OnPaint. Можно рисовать непосредственно на форме или использовать компонент TPaintBox. НЕ НУЖНО использовать TImage, он предназначен совсем не для этого и жрет кучу ресурсов. TImage - это компонент не для рисования, а для показа картинок (TPicture)
Ins вне форума Ответить с цитированием
Старый 07.08.2010, 17:14   #10
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Что бы не зависеть от потери фокуса, следует рисовать "в памяти", т.е на созданном объекте типа TBitMap (он имеет Canvas). А затем выводить рисунок на форму (в таймере или по каком либо событию).
Код:
var  Buffer: TBitMap;
begin
  Buffer:= TBitMap.Create; // создаем объект с канвой
  Buffer.Width:= 750;
  Buffer.Height:= 1050;  // размеры листа формата А4
  Buffer.Canvas.MoveTo(50,50);  // начало рисования
  Buffer.Canvas.LineTo(50,250);  // вертикальная линия в 200 пикс.
  Buffer.canvas.Rectangle(100,100,200,200);  //  рисуем квадрат
     <  и т.д. >
end;
// вывод рисунка на форму
Form1.Canvas.Draw(0,0,Buffer);
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi и 3D графика chircov090993 Помощь студентам 7 31.07.2010 00:04
Графика в Delphi kiss2 Общие вопросы Delphi 2 15.06.2010 13:52
3D Графика в Delphi QuadroX Фриланс 4 19.05.2010 19:33
Delphi графика. ][Jlopka Общие вопросы Delphi 3 05.05.2010 14:46
Графика в Delphi novi4ok_Delphi Помощь студентам 3 16.03.2010 19:23