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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.03.2011, 16:26   #1
Don Karleone
Форумчанин
 
Регистрация: 05.04.2010
Сообщений: 410
По умолчанию Изменение размеров компонента Image

Вот, возник такой вопрос: на форме есть image размером 100 на 100. На всей его поверхности отображается прямоугольник белого цвета. Еще есть кнопка button. При клике по button меняю размер image (увеличиваю в два раза до 200 на 200) и прорисовываю новый прямоугольник на весь компонент. Однако никакого изменения размеров
image не наблюдаю. Вот код:

Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Image1.Canvas.Rectangle(0,0,Image1.ClientWidth,Image1.ClientHeight);
end;

//увеличиваю размер image'а
procedure TForm1.Button1Click(Sender: TObject);
begin
  Image1.Width:=200;
  Image1.Height:=200;
  Image1.Canvas.Rectangle(0,0,Image1.ClientWidth,Image1.ClientHeight);
end;
ICQ: 593-013-807
Don Karleone вне форума Ответить с цитированием
Старый 12.03.2011, 16:31   #2
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

Код:
Image1.Width:= Image1.Width + 200;
думаю ет лучше поместить в OnPaint
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Image1.Canvas.Rectangle(0,0,Image1.ClientWidth,Image1.ClientHeight);
end;
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 12.03.2011, 16:40   #3
Don Karleone
Форумчанин
 
Регистрация: 05.04.2010
Сообщений: 410
По умолчанию

Цитата:
Сообщение от ArtGrek Посмотреть сообщение
Код:
Image1.Width:= Image1.Width + 200;
думаю ет лучше поместить в OnPaint
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Image1.Canvas.Rectangle(0,0,Image1.ClientWidth,Image1.ClientHeight);
end;
не стоит это помещать в OnPaint
ICQ: 593-013-807
Don Karleone вне форума Ответить с цитированием
Старый 12.03.2011, 16:45   #4
Alex2391
Пользователь
 
Аватар для Alex2391
 
Регистрация: 31.01.2011
Сообщений: 54
По умолчанию

А можете объяснить, что делает эта функция?
Код:
  Image1.Canvas.Rectangle(0,0,Image1.ClientWidth,Image1.ClientHeight);
Просто я у себя написал эти две строчки
Код:
  Image1.Width:=200;
  Image1.Height:=200;
и у меня все работает.
Alex2391 вне форума Ответить с цитированием
Старый 12.03.2011, 16:58   #5
Don Karleone
Форумчанин
 
Регистрация: 05.04.2010
Сообщений: 410
По умолчанию

Цитата:
Сообщение от Alex2391 Посмотреть сообщение
А можете объяснить, что делает эта функция?
Код:
  Image1.Canvas.Rectangle(0,0,Image1.ClientWidth,Image1.ClientHeight);
Это метод, рисующий прямоугольник на канве image текущим цветом пера и кисти с координатами (0, 0) - верхний левый угол прямоугольника, (Image1.ClietnWidth, Image1.ClientHeight) - нижний правый угол.
ICQ: 593-013-807
Don Karleone вне форума Ответить с цитированием
Старый 12.03.2011, 17:01   #6
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

то что я написал не подошло? если нет, напиши что не получаеца увеличить размер или прорисовку зделать
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 12.03.2011, 17:12   #7
Alex2391
Пользователь
 
Аватар для Alex2391
 
Регистрация: 31.01.2011
Сообщений: 54
По умолчанию

Прописал у себя этот код
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Image1.Width:=200;
  Image1.Height:=200;
  Image1.Canvas.Rectangle(0,0,Image1.ClientWidth,Image1.ClientHeight);
end;
и у меня проект вызывает исключение с сообщением "Can only modify an image if it contains a bitmap". В чем может быть дело?
Alex2391 вне форума Ответить с цитированием
Старый 12.03.2011, 17:15   #8
Don Karleone
Форумчанин
 
Регистрация: 05.04.2010
Сообщений: 410
По умолчанию

да в общем то размер наверное увеличивается, но визуально я этого не вижу. На
форме попрежнему остается белый квадрат размером 100 на 100. А должен стать 200 на 200.
ICQ: 593-013-807
Don Karleone вне форума Ответить с цитированием
Старый 12.03.2011, 17:21   #9
Alex2391
Пользователь
 
Аватар для Alex2391
 
Регистрация: 31.01.2011
Сообщений: 54
По умолчанию

А у меня-то в чем проблема? Почему возникает ошибка?
Alex2391 вне форума Ответить с цитированием
Старый 12.03.2011, 18:04   #10
Don Karleone
Форумчанин
 
Регистрация: 05.04.2010
Сообщений: 410
По умолчанию

Люди, откликнитесь, плз.
ICQ: 593-013-807
Don Karleone вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение размеров Image Sheva_ Помощь студентам 7 17.01.2011 11:26
Определение размеров компонента и положения по хендлу Marsel737 Общие вопросы Delphi 10 03.05.2010 00:53
Изменение размеров фигуры по F1 inzener-tolik Win Api 4 24.03.2010 15:37
Изменение размеров фигур artemavd Общие вопросы Delphi 2 03.03.2010 21:40
Изменение размеров pinksky Microsoft Office Excel 3 18.04.2008 15:52