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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.07.2010, 09:33   #1
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию Прорисовка линии

Помогите пожалуйста, я написал добовление фрейма но когда я прорисовал линию она прорисовалась до туда где изночально размеры картинки на фрейме.
Я правильно панимаю canvas не успевает прорисовать картинку и поэтому не прорисовываеться вся картинка?
Код:
procedure Tform1.dobavlenienov2(Owner:Tcomponent;owner2:TwinControl;per_x,per_y,vtr_x,vtr_y:integer);
var
WindowRgn: HRGN;
begin
komn2:=komn2+1;
 kom2:=TFrame3.Create(Owner);

 kom2.Parent:=Owner2;
 kom2.Image1.Canvas.Pen.Width:=5;
 kom2.Image1.Canvas.Pen.Color:=clblack;
 if vtr_y>per_y then begin
 kom2.Left:=per_x;
 kom2.Top:=per_y;
 kom2.Width:=(vtr_x-per_x+5);
 kom2.Height:=(vtr_y-per_y+5);
kom2.Image1.Width:=kom2.Width;
kom2.Image1.Height:=kom2.Height;
 kom2.Image1.Picture.Bitmap.Canvas.MoveTo(5,5);
 kom2.Image1.Picture.Bitmap.Canvas.LineTo(vtr_x-per_x,vtr_y-per_y);
 end;
  if vtr_y=per_y then begin
 kom2.Left:=per_x;
 kom2.Top:=per_y-round(kom2.Height/2);
 kom2.Width:=vtr_x+5;
kom2.Image1.Width:=kom2.Width;
kom2.Image1.Height:=kom2.Height;
 kom2.Image1.Canvas.MoveTo(round(kom2.Width/2),round(kom2.Height/2));
 kom2.Image1.Canvas.LineTo(vtr_x-per_x,vtr_y-per_y);
 showmessage('2');
 end;
   if vtr_y<per_y then begin
 kom2.Left:=per_x;
 kom2.Top:=per_y-kom2.Height;
 kom2.Width:=vtr_x+5;
 kom2.Height:=vtr_y-5;
kom2.Image1.Width:=kom2.Width;
kom2.Image1.Height:=kom2.Height;
 kom2.Image1.Canvas.MoveTo(5,kom2.Image1.Height-5);
 kom2.Image1.Canvas.LineTo(vtr_x-per_x,per_y-vtr_y);
 showmessage('3');
 end;
 kom2.Tag:=komn2;
 komponent.Add(inttostr(komn2));
 kom2.Name:='Frame_'+inttostr(komn2);
 //kom2.Image1.Transparent:=true;
windowRgn := CreateRgnFromBitmap(kom2.Image1.Picture.Bitmap);
SetWindowRgn(kom2.Handle, WindowRgn, True);
end;
Воображение важнее, чем знания. (Albert Einstein)
dmitriegorovih вне форума Ответить с цитированием
Старый 09.07.2010, 09:40   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Что-то я не понял что ты этим кодом делаешь...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.07.2010, 11:50   #3
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию

Я создаю новый фрейм на фрейме картинка а на картинке отрисовываю линию но она отрисовываеться не вся.
Воображение важнее, чем знания. (Albert Einstein)
dmitriegorovih вне форума Ответить с цитированием
Старый 09.07.2010, 11:55   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А тебе не будет лучше рисовать эту линию в событии OnPaint?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.07.2010, 12:17   #5
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию

Спасибо, Не пробовал, попробую

Зделал но вместо лиинии просто белый квадрат
Воображение важнее, чем знания. (Albert Einstein)

Последний раз редактировалось Stilet; 13.07.2010 в 08:01.
dmitriegorovih вне форума Ответить с цитированием
Старый 13.07.2010, 08:01   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Зделал но вместо лиинии просто белый квадрат
Хвастайся кодом
Вот как я на Фреймах рисовал бы:
Код:
procedure TForm1.FormPaint(Sender: TObject);
var c:TCanvas;
begin
c:=TCanvas.Create;
c.Handle:=GetDC(Frame21.Handle);
c.LineTo(100,100);
c:=nil;
end;
Все как грится не сложнее чем просто
I'm learning to live...

Последний раз редактировалось Stilet; 13.07.2010 в 08:06.
Stilet вне форума Ответить с цитированием
Старый 13.07.2010, 08:44   #7
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию

Большое спаисбо Stilet работает
Воображение важнее, чем знания. (Albert Einstein)
dmitriegorovih вне форума Ответить с цитированием
Старый 13.07.2010, 09:03   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну если это то что нужно то на здоровье
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.07.2010, 21:15   #9
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию

Stilet что мне делать линия прорисовываеться но когда я кидаю её на scrollbox то при движении за её границы линия стираеться
Воображение важнее, чем знания. (Albert Einstein)
dmitriegorovih вне форума Ответить с цитированием
Старый 15.07.2010, 07:35   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
когда я кидаю её на scrollbox то при движении за её границы линия стираеться
"Когда я кидаю майку в стиралку, при движении за ее барабан пуговицы отлетают. Помогите!" - вот так я понял твой вопрос.

P.S. Кстати, линию нельзя кинуть. ее можно нарисовать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прорисовка BitBtn keef Помощь студентам 0 14.03.2010 19:25
Прорисовка меню al072 Общие вопросы C/C++ 9 10.02.2010 17:10
Прорисовка дерева yulia Общие вопросы по Java, Java SE, Kotlin 3 02.11.2008 23:19
с# прорисовка MAcK Общие вопросы .NET 1 29.08.2008 16:48
Прорисовка букв Миша Помощь студентам 3 19.05.2008 19:46