Изменение размеров рисунка в C++ Builder

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
AleksP
Сообщения: 46
Зарегистрирован: 01 мар 2008, 22:33

На форме есть компонент TImage(Image1). Содержимое рисунка заполняется методом Image1->Canvas->Rectangle().
1) Можно ли изменить размер рисунка при изменении размеров формы?
2) Как удалить содержимое рисунка, чтобы при этом остался виден только белый фон?
Аватара пользователя
Alex_Burn
Сообщения: 147
Зарегистрирован: 13 апр 2007, 17:49
Контактная информация:

Насчет очистки рисунка:
В каком нибудь обработчике пишете

[Syntax="C++"]
Graphics::TPicture *Picture1=new Graphics::TPicture(); //создаем пустой обьект
Image1->Picture->Assign(Picture1); //загружаем пустой обьект
Picture1->Free(); //удалям из памяти пустой объект
Image1->Canvas->Brush->Color = clWhite;
[/Syntax]
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

А на счёт ресайзинга рисунка вот что могу сказать. Не знаю, как это сделать в VTL, но на чистом Win32 API тебе поможет функция StretchBlt. Подробности в MSDN:

http://msdn.microsoft.com/en-us/library/ms532355.aspx
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
HollywooD-new
Сообщения: 2
Зарегистрирован: 25 апр 2010, 18:11

пишу подобную программу и для решения вашей проблемы сделал так

Код: Выделить всё

 void __fastcall TForm1::ListView1SelectItem(TObject *Sender,   //открытие выделеной картинки в  image1
      TListItem *Item, bool Selected)
{      if(ListView1->Selected){
        AnsiString path = Item->SubItems->Strings[2];
        Image1->Picture->LoadFromFile(path);
      }  else Image1->Picture = NULL; // ничего не показывай 

}
Ответить