Zwiększanie objętości obszaru

0

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;)

0

to chyba powinno wygladac tak;
picturebox.Width = (picturebox.Width + 20)%rozdzielczosc_formatki_czy_czego_tam_kolwiek;

0
marta1995 napisał(a):
picturebox.Width = picturebox.Width + 20%;

Ale co chciałaś przez to osiągnąć?

0

Zamiast procenta na końcu powinien być średnik ;)

0

myślałam, ze tym sposobem uda mi się powiększyć obrazek na pictureboxsie

1
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.

0

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ć.

0

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.

0

A czy nie szybciej się policzy:

pictureBox1.Width = pictureBox1.Width + pictureBox1.Width/5;

?

0

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1