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

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

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

Delphi.int.ru Expert

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

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

#   

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


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

Подробнее »



Вопрос # 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

Beat (статус: Посетитель), 20 декабря 2010, 19:41 [#7]:

Необходимо также увеличить Image1->Picture->Bitmap->Width
Image1->Picture->Bitmap->Height

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

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