БлогNot. Visual C++: загружаем и накладываем друг на друга картинки из сети

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
cat.png
вот что вышло (скрин)
вот что вышло (скрин)

19.11.2015, 02:14 [7759 просмотров]


теги: графика интернет c++/cli

К этой статье пока нет комментариев, Ваш будет первым