|
Вопрос # 2 625/ вопрос открыт / |
|
Здравствуйте, уважаемые эксперты! Рисую на канве Image вот таким образом:
for I := 0 to image1.Height do
for j := 0 to image1.Width do
image1.Canvas.Pixels[j,i]:= ClRed;
затем после отрисовки изменяю размер Image:
image1.Height:=image1.Height+15;
после увеличения размеров Image рисую заново, но отрисовка происходит только на той часте на которая была до увеличения размера Image а не на всей поверхности....
Пробовал предворительно очищать поверхность перед второй отрисовкой, но это тоже не помогло...
Может кто знает, как сделать, что бы отрисовка шла по всей поверхности?
 |
Вопрос задал: Ученый (статус: 8-ой класс)
Вопрос отправлен: 13 апреля 2009, 13:55
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: min@y™
Советую не рисовать прямо на Image, а делать это на каком-нить TBitmap, затем копировать его на Image.
Z написал тебе примерчик, прицепляю к ответу. К ответу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки ответа)
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 13 апреля 2009, 16:04
Оценка за ответ: 5
|
Мини-форум вопроса
Всего сообщений: 7; последнее сообщение — 20 декабря 2010, 19:41; участников в обсуждении: 4.
|
Вадим К (статус: Академик), 13 апреля 2009, 14:40 [#1]:
А что, если рисовать другим цветом второй раз, то получается уголок?
В целом, такой способ прорисовки плох, ну как минимум - он медленный.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Ученый (статус: 8-ой класс), 13 апреля 2009, 14:46 [#2]:
Дело в том, что когда я увеличиваю размер имеджа, образуется как новая не закрашенная область...мне нодо ее закрасить...но что то не хочет он ее красить....хотя свойство width точно увеличивается.....но рисует повторно только в той области, которая была первоначально до увеличения......пробовал и разными цветами (хотя по условию задачи нада одним и темже перерисовывать) не помогло....такое ощущение ,что увелививается размеры Image, а размеры его канвы не изменяются....
|
|
Вадим К (статус: Академик), 13 апреля 2009, 14:54 [#3]:
вся прорисовка с изменением в одной процедуре?
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Ученый (статус: 8-ой класс), 13 апреля 2009, 14:58 [#4]:
procedure TForm1.Button1Click(Sender: TObject);
var
i,j:integer;
begin
for I := 0 to image1.Height do
for j := 0 to image1.Width do
image1.Canvas.Pixels[j,i]:= ClRed;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
image1.Height:=image1.Height+15;
end;
После увеличения размера нажимаю повторно button1
|
|
Эхо Унитазного Бачка (статус: 1-ый класс), 13 апреля 2009, 15:05 [#5]:
Ну все верно. Та быть и должно.
допиши на Button1
var
i,j:integer;
b:TBitmap;
begin
b:=TBitmap.Create;
b.Width:=image1.Height;
b.Height:=image1.Width;
for I := 0 to image1.Height do
for j := 0 to image1.Width do
begin
b.Canvas.Pixels[j,i]:= ClRed;
end;
image1.Picture.Bitmap:=b;
b.Free;
|
|
Ученый (статус: 8-ой класс), 13 апреля 2009, 15:12 [#6]:
Все равно не помогает
|
|
Beat (статус: Посетитель), 20 декабря 2010, 19:41 [#7]:
Необходимо также увеличить Image1->Picture->Bitmap->Width
Image1->Picture->Bitmap->Height
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|