Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Как менять рисунок


Автор: Antonios 16.2.2009, 22:06
Суть в следующем: в базе содержаться названия всех рисунков(их много) в формате .gif. В програме есть один обект для отображения рисунков(еще не знаю точно какой именно, думаю что pictureBox). Вопрос как должна выглядеть функция для замены рисунка на новый(тойсть чтоб отображался другой).
Ну в этом вся суть. Какой обект использовать для этого всего и функция в которую передаеться названия файла и оно перезагружает рисунок. Пользуюся студией 2005.
Буду очень благодарен если напишите код такой процедуры, ибо в этом разделе полный нуб.

Автор: Andrey44 17.2.2009, 07:53
Код

CRect rc;
pictureBox.GetClientRect(&rc);
pictureBox.InvalidateRect(&rc, TRUE);

Автор: Antonios 17.2.2009, 11:51
Насколько понял эта часть кода, узнает сначала координаты рамки этого рисунка, а потом накладает новую будто для нового рисунка? А как назначить откуда новый рисунок взять?

Автор: Earnest 17.2.2009, 12:37
Если pictureBox - это статик, то картинка меняется функцией SetBitmap или SetIcon. Для чего тебе нужно иметь этот самы CBitmap или HICON. Наверное, все же проще CBitmap. CBitmap загрудай из своего gif'а

Автор: Antonios 17.2.2009, 13:29
Цитата(Earnest @ 17.2.2009,  12:37)
Если pictureBox - это статик, то картинка меняется функцией SetBitmap или SetIcon. Для чего тебе нужно иметь этот самы CBitmap или HICON. Наверное, все же проще CBitmap. CBitmap загрудай из своего gif'а

поподробнее можна, а то чесно мало что из сказаного понял(((

Автор: Antonios 18.2.2009, 20:12
ну так что?

Автор: Earnest 19.2.2009, 10:03
Попродробнее о чем? О том, как CBitmap поместить в статик? Так уже написано: функцией SetBitmap.
А если ты о том, как картинку загрузить из своей базы, так кто же его знает, как она устроена. В GDI+ есть методы загрузки картинки из файлов различных форматов, и, возможно, из потока, но насчет последнего я не уверена.

Автор: Andrey44 19.2.2009, 10:08
Код

Gdiplus::Image* img1 = Gdiplus::Image::FromFile(..................);
Gdiplus::Image* img2 = Gdiplus::Image::FromStream(...............);

Автор: Earnest 19.2.2009, 10:11
О, значит таки есть из потока.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)