Warum schneidet GDI + skalierte Bilder ab?

8

Ich mache eine Bildskalierung mit GDI + (C #) und habe ein Problem festgestellt, bei dem das Bild, das ich skaliere, entlang der linken und oberen Kante abgeschnitten wird.

Ссылка

Um dies zu reproduzieren, erstellen Sie ein neues Formularprojekt, speichern Sie dieses Bild im Ordner bin \ debug und fügen Sie den folgenden Code hinzu an das Formular (und die entsprechenden Ereignisse):

%Vor%

Wie Sie sehen können, werden die linken und obersten Reihen von Pixeln abgeschnitten, als ob das Skalierungsrechteck in der Mitte des Pixels beginnt.

Edit: Zur Beachtung: Ich habe auch versucht, eine Scale-Transformation zu verwenden, anstatt Rechtecke wie oben zu verwenden, und es wurde genau so dargestellt.

Nun, das sagte ich, habe eine Arbeit entdeckt. Wenn Sie die Rechteckdeklarationen im obigen Beispiel wie folgt ändern:

%Vor%

Damit wir die "halbe" Sache korrigieren, wird das Bild korrekt gerendert.

Grundsätzlich, während dies leicht zu umgehen ist, mache ich etwas falsch oder ist das normales Verhalten?

Bearbeiten: Gemäß Andrei Panas Vorschlag habe ich versucht, diesen Code vor dem Zeichnungsaufruf hinzuzufügen:

%Vor%

Und leider hat es das Rendering nicht beeinflusst. Die Kante war noch abgeschnitten.

    
Mike Caron 19.12.2010, 06:51
quelle

3 Antworten

12

Versuchen Sie, PixelOffsetMode auf PixelOffsetMode.Half zu setzen. Standardmäßig werden Pixel für High-Speed-Anti-Aliasing um -0,5

versetzt     
Andrei Pana 19.12.2010, 07:22
quelle
0

Stellen Sie die Größe des Bildes so ein, dass es (in jeder Dimension) 2 Pixel größer ist als die Grafik, die es enthält. Ich bin auch darauf gestoßen und habe festgestellt, dass der Antialiasing-Over-Shoot nie mehr als 1 Pixel pro Seite beträgt.

Mit anderen Worten, entweder deaktivieren Sie das Anti-Aliasing (das wird das beheben) oder ändern Sie diesen Abschnitt Ihres Codes:

%Vor%

dazu:

%Vor%

(oder verwenden Sie einen äquivalenten Workaround, der srcRect verwendet)

Ja, das ist normales Verhalten und ist ein bekanntes Problem mit GDI + /. Net.

    
Flipster 19.12.2010 07:27
quelle
0

Sie können diesen Beitrag auch lesen

Ссылка

    
user572287 12.01.2011 06:27
quelle

Tags und Links