Почему Graphics :: DrawImage не растягивает изображения, как ожидалось? - PullRequest
3 голосов
/ 17 июля 2010

Я делаю перегруженным TableLayoutPanel, который рисует некоторые причудливые границы , но по какой-то причине вызов Graphics::DrawImage не работает должным образом.Когда я растягиваю, кажется, что исходное изображение размером 1x10 пикселей затухает:

alt text

Эта функция выполняет рендеринг:

void GTableLayoutPanel::RenderSides(Graphics^ g, array<Drawing::Image^>^ sideImages)
{
    if( sideImages )
    {
        if( sideImages->Length < 4 )
        {
            throw gcnew System::ArgumentException(String::Format("Not enough images supplied to render sides (expected 4 but only got {0})", sideImages->Length));
        }

        int borderSize = sideImages[0]->Height;
        g->DrawImage(sideImages[0], Rectangle(borderSize, 0, this->Width-borderSize*2, borderSize));
        g->DrawImage(sideImages[1], Rectangle(this->Width-borderSize, borderSize, borderSize, this->Height-borderSize*2));
        g->DrawImage(sideImages[2], Rectangle(borderSize, this->Height-borderSize, this->Width-borderSize*2, borderSize));
        g->DrawImage(sideImages[3], Rectangle(0, borderSize, borderSize, this->Height-borderSize*2));
    }
}

1 Ответ

4 голосов
/ 17 июля 2010

Это побочный эффект интерполяции при использовании экстремального увеличения.Вам понадобится что-то вроде этого:

 g->InterpolationMode = System::Drawing::Drawing2D::InterpolationMode::NearestNeighbor;
 g->PixelOffsetMode = System::Drawing::Drawing2D::PixelOffsetMode::None;
...