Witam
Pisze w VS C#
Napisałam taką linijkę kodu
picturebox.Width = picturebox.Width + 20%;
wywala mi to dwa błędy, nie mam pojęcia czemu, poza tym co mam w tym błędnego:
- ; expected
- Invalid expression term ';'
proszę o pomoc;)
Witam
Pisze w VS C#
Napisałam taką linijkę kodu
picturebox.Width = picturebox.Width + 20%;
wywala mi to dwa błędy, nie mam pojęcia czemu, poza tym co mam w tym błędnego:
proszę o pomoc;)
to chyba powinno wygladac tak;
picturebox.Width = (picturebox.Width + 20)%rozdzielczosc_formatki_czy_czego_tam_kolwiek;
Zamiast procenta na końcu powinien być średnik ;)
myślałam, ze tym sposobem uda mi się powiększyć obrazek na pictureboxsie
marta1995 napisał(a):
myślałam, ze tym sposobem uda mi się powiększyć obrazek na pictureboxsie
No to tak jak @Sopelek napisał: Width * 1.2. Operator % jest to modulo, czyli reszta z dzielenia.
Wynik tego mnożenia jest typu double
trzeba jeszcze skonwertować na int
:
picturebox.Width = (int)(picturebox.Width * 1.2);
Żeby obrazek rozciągał się w PictureBoxie trzeba się chyba pobawić właściwością SizeMode
, nie pamiętam co dokładnie trzeba tam ustawić.
No to, aby powiększyć obrazek trzeba zwiększyć dł. i wys., a nie samą długość. A jak chcesz sam obrazek + obszar, czyli faktyczne powiększenie to to się jeszcze inaczej robi. Poza tym trzeba to zaokrąglić lub zrzutować na inta. Jeżeli chcesz cały obrazek powiększyć, to najpierw powiększasz obszar tak jak teraz czyli:
pictureBox1.Width = (int)(pictureBox1.Width * 1.2);
pictureBox1.Height = (int)(pictureBox1.Height * 1.2);
A potem musisz użyć klasy Graphics
na obrazku i go przerysować na nowy obszar:
float zoomConst = 1.2f;
pictureBox1.Width = (int)(pictureBox1.Width * zoomConst);
pictureBox1.Height = (int)(pictureBox1.Height * zoomConst);
Bitmap b = new Bitmap(pictureBox1.Width, pictureBox1.Height);
Graphics g = Graphics.FromImage(b);
g.DrawImage(pictureBox1.Image, new Rectangle(0, 0, pictureBox1.Width, pictureBox1.Height));
pictureBox1.Image = b;
Oczywiście powinno się uwzględnić proporcję obrazka.
I to było powiększanie "ręczne", a jak chcesz od razu, żeby ci powiększało automatycznie to zmień pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
. Wtedy tylko wystarczy dł. i wys. PictureBox'a zmieniać w sposób jak w pierwszym kodzie.
A czy nie szybciej się policzy:
pictureBox1.Width = pictureBox1.Width + pictureBox1.Width/5;
?
optymalizujemy kompletnie nieistotny fragment. nawet jeśli zostanie to zrobione na fp, to i tak ilość operacji będzie całkowicie pomijalna przy tym, co zrobi sama zmiana wartości pola.