Visual C++: загружаем и накладываем друг на друга картинки из сети
Создав проект Windows Forms, подключим к нему два дополнительных пространства имён:
using namespace System::Net; using namespace System::Drawing::Drawing2D;
Добавим на форму компоненту PictureBox со свойствами Dock = Fill
, SizeMode = AutoSize
.
Опишем в свойствах формы указатели на будущие рисунки:
private: Image ^img1; Image ^img2;
В конструкторе формы (после вызова InitializeComponent()
) получим рисунки с их URL-адресов:
img1 = Image::FromStream((gcnew WebClient())->OpenRead("http://blog.kislenko.net/pictures/5364.jpg")); img2 = Image::FromStream((gcnew WebClient())->OpenRead("http://blog.kislenko.net/pictures/6721.png"));
В методе Paint
для компоненты PictureBox
остаётся всё отрисовать:
//Создание пустого Bitmap по размерам клиентской части формы PictureBox ^ pBox = (PictureBox ^)sender; pBox->Image = gcnew Bitmap (this->ClientSize.Width, this->ClientSize.Height); //Получение из него графического контекста Graphics ^gr = Graphics::FromImage(pBox->Image); //Настройки качества - можно оставить и по умолчанию, исключив эти 3 строки gr->CompositingQuality = CompositingQuality::HighQuality; gr->InterpolationMode = InterpolationMode::HighQualityBicubic; gr->SmoothingMode = SmoothingMode::HighQuality; //Собственно рисование gr->DrawImage(img1, 0, 0); gr->DrawImage(img2, 100, 100); gr->DrawImage(img2, 150, 150);
Здесь вторая картинка специально дважды накладывается на первую и на свою копию, чтоб показать, что накладываемый PNG должен быть с прозрачным фоном, как вот эта кошка из примера.
cat.png
вот что вышло (скрин)
19.11.2015, 02:14 [7866 просмотров]