Guten Abend Leute,
ich habe gerade vor eine Funktion zu schreiben dir ein Bild so verkleinert das es in einen vorgegeben Bereich passt. Dabei soll das Bild nicht abgeschnitten werden. Das heißt wenn ich versuche ein 1024x768 bild in ein 500x1000 Bereich bringen will soll oben und unten ein schwarzer Streifen sein.
Umgekehrt sollte das auch gehen wenn ich versuche ein 500x1000 Bild in einen 1000x400 Breiech bringen will sollte Links und Rechts ein Streifen sein. Im Grunde soll das so sein wie bei Windows wenn man ein Wallpaper einstellt und als Eigenschaft Angepasst.
Momentan sieht es bei mir so aus. Aber ich hab keinen Durchblick mehr.
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
public void SetPreviewImage(int MaxWidth, int MaxHeight)
{
Bitmap b = new Bitmap(MaxWidth, MaxHeight);
Graphics g = Graphics.FromImage((Image)b);
Image SourceImage = OriginalImage;
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
g.FillRectangle(new SolidBrush(Color.Black), 0, 0, MaxWidth, MaxHeight);
if (MaxWidth > MaxHeight)
{
if (SourceImage.Width > SourceImage.Height)
{
float Ratio = SourceImage.Width / SourceImage.Height;
int NewHeight = MaxHeight;
int NewWidth = (int)(NewHeight/Ratio);
g.DrawImage(SourceImage, 0, 0, NewWidth, NewHeight);
}
else
{
float Ratio = SourceImage.Height / SourceImage.Width;
}
}
else
{
if (SourceImage.Width > SourceImage.Height)
{
float Ratio = SourceImage.Width / SourceImage.Height;
}
else
{
float Ratio = SourceImage.Height / SourceImage.Width;
}
}
PreviewImage = (Image)b;
g.Dispose();
}
|