Temat: [C++ NET 2.0] Zmiana rozdzielczości obrazka, przy...
Czy mógłby mi ktoś podpowiedzieć, w jaki sposób zmienić rozdzielczość obrazka, bez zmiany kolorów ?Już kilkanaście godzin próbuję zmieniać różne ustawienia instancji obiektu Graphics czy to SmoothingMode czy PixelOffsetMode ... (co więcej nawet ręcznie zmieniałem "rozciągłość" na Matrix’e) a i tak i siak obrazek zostaje rozmazany, gdy mi zależy na zachowaniu kolorów, a nie na tzw. „Quality”.
W kodzie, który napisałem wykomentowałem sposoby, jakich próbowałem. Wiem, że można by to rozwiązać prostym algorytmem, ale interesuje mnie rozwiązanie w NET. Proszę o pomoc.
private: System::Drawing::Image^ Resize(System::Drawing::Image^ Img, int Width, int Height)
{
Stream^ strm = gcnew MemoryStream( 1000 );
Bitmap^ Bmp = gcnew Bitmap(Img);
Bitmap^ BmpSeld = gcnew Bitmap(Width, Height);
RectangleF^ rSource = gcnew RectangleF(0, 0, Img->Width, Img->Height);
RectangleF^ rDestination = gcnew RectangleF(0, 0, Width, Height);
//Matrix^ matx = gcnew Matrix();
//matx->Scale(2, 1);
//gras->Transform = matx;
Graphics^ gras = Graphics::FromImage(BmpSeld);
//gras->InterpolationMode = InterpolationMode::None;
//gras->SmoothingMode = SmoothingMode::None;
//gras->PixelOffsetMode = PixelOffsetMode::None;
//gras->CompositingQuality = CompositingQuality::None;
gras->DrawImage(Bmp,*rDestination, *rSource, GraphicsUnit::Pixel);
BmpSeld->Save(strm, ImageFormat::Png);
return Image::FromStream(strm);
}