2017-07-11 3 views
-1

Je veux dessiner un rect qui a la même taille sur des images avec une résolution différente. Si je pouvais expliquer bien, ce que je veux est de dessiner un rectangle sur une image mais vous savez quand (par exemple) j'utilise RectangleF (0.0 F, 0.0F, 100.0F, 200.0F) il apparaîtra grand sur les images basse résolution et aussi petit sur les images à haute résolution.C# Comment dessiner un rectangle sur des images avec une résolution différente?

toute aide sera appréciée.

mon code:

Color customColor = Color.FromArgb(50, Color.Blue); 
SolidBrush shadowBrush = new SolidBrush(customColor); 
// Create array of rectangles. 
RectangleF[] rects = { new RectangleF(image.Width/2, 0.0F, 100.0F, 200.0F), new RectangleF(100.0F, 200.0F, 250.0F, 50.0F) }; 
g.FillRectangles(shadowBrush, rects); 
+0

La même échelle n'est pas vraiment claire. S'il vous plaît éloignez votre question! – TaW

+0

@TaW désolé si je pouvais expliquer bien, ce que je veux est de dessiner un rectangle sur une image, mais vous savez quand (par exemple) j'utilise RectangleF (0.0F, 0.0F, 100.0F, 200.0F), il apparaîtra grand sur des images à basse résolution et aussi de petites images haute résolution. –

+0

Oui. Vous devez a) calculer les facteurs de mise à l'échelle nécessaires pour chaque image, puis b) mettre à l'échelle les graphiques en faisant un Graphics.ScaleTransform avant de dessiner. – TaW

Répondre

0

Sélectionnez une résolution de base, par exemple: 80x60

Obtenez la résolution d'image par exemple:

var imageWidth = image.Width; 
var imageHeight = image.Height; 

Calculer l'échelle de la résolution de base à la résolution des utilisateurs:

var scaleWidth = imageWidth/80; 
var scaleHeight = imageHeight/60; 

Multiplier les dimensions de votre Rect par l'échelle, par exemple:

newX = baseX * scaleWidth, 
newY = baseY * scaleHeight, 
newWidth = baseWidth * scaleWidth, 
newHeight = baseHeight * scaleHeight 

A écrit cette réponse sur mon téléphone il est donc non testé, mais il devrait être correct. 'Résolution d'image' peut signifier la taille de pixel ou dpi.

+0

travaillé great.thank beaucoup –

+0

Comment puis-je utiliser votre solution pour écrire du texte sur l'image et le texte de l'échelle automatique en fonction de la résolution de l'image? @Xela –