Procedure: Prestaties verbeteren door automatisch schalen te voorkomen
GDI+ kan een afbeelding automatisch schalen terwijl u deze tekent, waardoor de prestaties worden verlaagd. U kunt ook de schaal van de afbeelding beheren door de afmetingen van de doelrechthoek door te geven aan de methode DrawImage.
Met de volgende aanroep van de methode DrawImage wordt bijvoorbeeld een linkerbovenhoek van (50, 30) opgegeven, maar wordt geen doelrechthoek opgegeven.
e.Graphics.DrawImage(image, 50, 30); // upper-left corner at (50, 30)
e.Graphics.DrawImage(image, 50, 30) ' upper-left corner at (50, 30)
Hoewel dit de eenvoudigste versie van de methode DrawImage is in termen van het aantal vereiste argumenten, is dit niet noodzakelijkerwijs de meest efficiƫnte. Als de resolutie die wordt gebruikt door GDI+ (meestal 96 punten per inch) verschilt van de resolutie die is opgeslagen in het Image-object, wordt de afbeelding geschaald met de DrawImage methode. Stel dat een Image object een breedte heeft van 216 pixels en een opgeslagen horizontale resolutiewaarde van 72 punten per inch. Omdat 216/72 3 is, zal DrawImage de afbeelding schalen zodat deze een breedte van 3 inch heeft met een resolutie van 96 punten per inch. Dat wil gezegd, DrawImage een afbeelding met een breedte van 96x3 = 288 pixels weergeeft.
Zelfs als uw schermresolutie verschilt van 96 punten per inch, zal GDI+ de afbeelding waarschijnlijk schalen alsof de schermresolutie 96 punten per inch was. Dat komt doordat een GDI+ Graphics-object is gekoppeld aan een apparaatcontext en wanneer GDI+ de apparaatcontext voor de schermresolutie opvraagt, is het resultaat meestal 96, ongeacht de werkelijke schermresolutie. U kunt automatisch schalen voorkomen door de doelrechthoek op te geven in de methode DrawImage.
Voorbeeld
In het volgende voorbeeld wordt dezelfde afbeelding tweemaal weergegeven. In het eerste geval wordt de breedte en hoogte van de doelrechthoek niet opgegeven en wordt de afbeelding automatisch geschaald. In het tweede geval worden de breedte en hoogte (gemeten in pixels) van de doelrechthoek opgegeven als dezelfde breedte en hoogte van de oorspronkelijke afbeelding. In de volgende afbeelding ziet u de afbeelding die twee keer wordt weergegeven:
Image image = new Bitmap("Texture.jpg");
e.Graphics.DrawImage(image, 10, 10);
e.Graphics.DrawImage(image, 120, 10, image.Width, image.Height);
Dim image As New Bitmap("Texture.jpg")
e.Graphics.DrawImage(image, 10, 10)
e.Graphics.DrawImage(image, 120, 10, image.Width, image.Height)
De code compileren
Het voorgaande voorbeeld is ontworpen voor gebruik met Windows Forms en vereist PaintEventArgse
, een parameter van de Paint gebeurtenis-handler. Vervang Texture.jpg door een afbeeldingsnaam en pad die geldig zijn op uw systeem.
Zie ook
.NET Desktop feedback