Zentralisierung eines Images in einer PictureBox
-
Hallo,
habe derzeit ein kleineres Problemchen. Ich will versuchen ein Bild in der Picturebox zu zentralisieren (von der breite her) und habs auch schon mit der Graphics-Methode TranslateTransform versucht, bin dort jedoch nicht weiter gekommen, da ich nicht auf die entsprechende formel komme. zudem scheine ich nicht beachtet zu haben, dass die x-koordinate dann star bleibt, was sie aber nich darf. da die picturebox irgendwann kleiner ist als das bild werden die Bildlaufleisten auf visible geschaltet( was auch sehr gut klappt). Daher meine Frage,
wie kann ich ein Bild solange zentrieren bis die picturebox kleiner wird als das geladene Bild?
ps: sorry wegen eventuellen Rechtschreibfehlern, ich bin sehr müde heute..
-
Reicht denn nicht
pictureBox->SizeMode = PictureBoxSizeMode::CenterImage;
?
-
nein, klappt eindeutig nicht. Ich habs jetzt mal simplerweise ins Paint-event mit rein genommen, da das ja jedesmal ausgeführt wird, wenn sich was ändert.
System::Void pictureBox1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) { Graphics ^gc = e->Graphics; gc->Clear(SystemColors::ControlLight); if (pictureBox1->Image != nullptr) { // Korrektur für möglicherweise eingeblendete Bildlaufleisten int corrW = 0; int corrH = 0; if (vScrollBar1->Visible) corrW = vScrollBar1->Width; if (hScrollBar1->Visible) corrH = hScrollBar1->Height; pictureBox1->SizeMode = PictureBoxSizeMode::CenterImage; gc->DrawImage(pictureBox1->Image, Rectangle(0, 0, pictureBox1->Right - corrW, pictureBox1->Bottom - corrH), Rectangle(hScrollBar1->Value, vScrollBar1->Value, pictureBox1->Right - corrW, pictureBox1->Bottom - corrH), GraphicsUnit::Pixel); } }
also so klappt es z.b. nicht... da ändert sich nix weiter.