C# Lad checkbox køre en void

Tags:    checkbox c#

<< < 12 > >>
Hey Udviklere.
Jeg er pænt ny til c# og er igang med at lave et program til et spil.
Jeg har to PictureBox's.
Den ene kan load'e et billede.
PictureBox'ens størrelse er ikke ret stor, så billederne vil normalt ikke passe. Jeg har lavet en checkbox med teksten: "Maintain Aspect Ratio", og når folk "check'er" den, skulle billedet "Resize'e" og holde "Aspect Ratio". Problemet er bare at for det første er jeg ikke engang sikker på om min public void er rigtig, og så har jeg ingen anelse om hvordan jeg for min checkbox til at gøre som beskrevet.
Min kode til Maintain Aspect Ratio er:
public void GenerateThumbnail(string filePath, string origFileName, string thumbFileName, ImageFormat imgFormat)
{

System.Drawing.Image origImage = System.Drawing.Image.FromFile(filePath + @"\" + origFileName);

float WidthPer, HeightPer;
int NewWidth, NewHeight;
Size ThumbnailSize = new Size(100, 100);
if (origImage.Width > origImage.Height)
{
NewWidth = ThumbnailSize.Width;
WidthPer = (float)ThumbnailSize.Width / origImage.Width;
NewHeight = Convert.ToInt32(origImage.Height * WidthPer);
}
else
{
NewHeight = ThumbnailSize.Height;
HeightPer = (float)ThumbnailSize.Height / origImage.Height;
NewWidth = Convert.ToInt32(origImage.Width * HeightPer);
}
System.Drawing.Image origThumbnail = new Bitmap(NewWidth, NewHeight, origImage.PixelFormat);
Graphics oGraphic = Graphics.FromImage(origThumbnail);
oGraphic.CompositingQuality = CompositingQuality.HighQuality;
oGraphic.SmoothingMode = SmoothingMode.HighQuality;
oGraphic.InterpolationMode = InterpolationMode.HighQualityBicubic;
Rectangle oRectangle = new Rectangle(0, 0, NewWidth, NewHeight);
oGraphic.DrawImage(origImage, oRectangle);
origThumbnail.Save(filePath + @"\" + thumbFileName, imgFormat);
origImage.Dispose();
}

Er den rigtig? Og hvordan får jeg min checkbox til at "Resize'e" og "Maintain'e Aspect Ratio" på billedet i min Picturebox?




16 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
checked med lille 'c' er et nøgleord i C#. Den property der angiver om feltet er afkryset er Checked med stort C.

Jeg lavede lige et lille forms projekt. Smed en checkbox og en picturebox ind. Dobbeltklikkede på Checkboxen og på selve Form'en. Og tilføjede så til deres event handlers så det ser sådan her ud:
Fold kodeboks ind/udCSharp kode 


Her har jeg smidt den "første kode" i min Load event handler. Men for dig afhænger det af hvornår du vil have dit billede vist. Men pointen i bund og grund var at du behøver ikke selv lave kode til at bevare aspect ratio fordi det kan pictureboksen selv gøre ved at du sætter dens SizeMode til Zoom.


Jeg har lavet en browse knap, som brugeren trykker på og load'er et billede ind i PictureBox1. Hvis billedet ikke passer ind i PictureBox1 kan brugeren vælge at "resize'e" sit billede. Det er hvad der sker indtil videre. Der er der det skal ske.
Plus+
Fold kodeboks ind/udCSharp kode 

Melder fejl (denne fejl):

Error 1 'System.Windows.Forms.PictureBox' does not contain a definition for 'Sizemode' and no extension method 'Sizemode' accepting a first argument of type 'System.Windows.Forms.PictureBox' could be found (are you missing a using directive or an assembly reference?) 83 29




Det hedder SizeMode og ikke Sizemode. Du skal være mere opmærksom på store og små bogstaver.



Ah...Derfor...Tak:-) Mangler stadig lige at lægge den "første kode" ind.
Fold kodeboks ind/udCSharp kode 

Melder fejl:

Error 1 Expected class, delegate, enum, interface, or struct



Indlæg senest redigeret d. 13.06.2011 19:21 af Bruger #16668
Nu melder den fejl ved private void:
Expected class, delegate, enum, interface, or struct


Har du slettet din metode og slettet for meget eller for lidt. En { eller }.

Det er meget basale ting du fejler på og det er slet ikke for at være ubehøvlet, men jeg synes du skulle prøve at læse en C# bog for at få en grundlæggende forståelse.



Edit: Fik lige svaret på noget der allerede var svaret på. My bad :)

Mvh.

Kasper (TSW)



Indlæg senest redigeret d. 14.06.2011 13:30 af Bruger #1
Hvad skal jeg gøre med filepath? Hvad skal jeg declare den som?



<< < 12 > >>
t