![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите с TImage [D3, D6, Win95/98]
super_alex © (2003-02-07 12:05:00)Столкнулся с такой проблемой: если панели или имаджу задать какой-нить align (или просто без align), то потом (в коде) его размеры не хотят меняться. Вернее фактически размеры изменяются, то есть делаются такими как я задаю, но отображаются те которые были до компиляции???
Допустим собираю форму, кидаю на неё имадж (100х100), в коде (допустим при нажатии на кнопку) изменяю размер допустим 200х200 и рисую просто линию на нем. При отображении имадж остался прежним (100х100), а линия нарисовалась, но только та её часть которая вошла в квадрат 100х100???
Помогите кто знает - очень надо...
super_alex (2003-02-07 12:31:00) [1]Всем спасибо - разобрался!!!
Smithson (2003-02-07 12:26:00) [2]Именно так. А обошел этот секс просто рисование на Canvas формы.
icWasya (2003-02-07 12:22:00) [3]скорее всего происходит следующее:
при первом обращении к Image.Canvas делается проверка наличия у Image объекта Picture. Если Picture = Nil то создаётся TBitmap c размерами равными размеру Image. И затем всё рисуется на этом Bitmap. Если после этого Image изменяет размер, то у этого Bitmap размер не меняется.
для устранения эффекта сделай так
1)
procedure TForm1.FormCreate (Sender:TObject);
begin
...
// гарантировано создадим Picture.Bitmap;
Image1.Canvas.Pixels[0,0]:=clWhite;
...
end;
2)
procedure TForm1.OnResize(Sender:TObject);
begin
Image1.Picture.Bitmap.Width:=Image1.Width;
Image1.Picture.Bitmap.Height:=Image1.Height;
end;
super_alex (2003-02-07 12:18:00) [4]Что никто тоже не знает?