[Visual C++ 2005]pictureBox i zagadka zwracanych wartości


(Masterslynx) #1

Znalazłem taką łamigłówkę i coś nie mogę tego rozwiązać.

Dotyczy komponentu pictureBox.

Do niego jest załadowany już jakiś plik graficzny.

Ten fakt jest przy zdarzeniu button_click

pictureBox1->Load(imageList1->Images->Keys[x]->ToString());

w imageList znajduje się ten obrazek, ale to nie jest istotne. Następnie jest zdarzenie pictureBox_MouseHover, czyli jak kursor będzie przez jakiś czas nad obiektem, czyli obrazkiem, wewnątrz:

MessageBox::Show(Convert::ToString(pictureBox1->Image->Size.Height + 150) + " " + Convert::ToString(pictureBox1->Image->Size.Width + 150));

            // wersja 1 //pictureBox1->ClientSize = System::Drawing::Size(150, 150);

           // wersja 2 //pictureBox1->ClientSize = System::Drawing::Size(pictureBox1->Image->Size.Height + 150, pictureBox1->Image->Size.Width + 150);

                pictureBox1->Load(imageList1->Images->Keys[3]->ToString());

MessageBox to tylko taki "debugger" sprawdzający i wszystko jest w porządku. Zwraca wartość x i y obrazka powiększoną o 150 . Gdy użyję wersji pierwszej, czyli wymiarów ustawionych na sztywno to wszystko jest ok, obrazek po najechaniu myszką zmienia rozmiary do 150 x 150. Natomiast jak użyję drugiej wersji to nic się nie dzieje, mimo, że zawiera takie same wartości (nie takie same, ale powiększone o 150 tak by można było zobaczyć różnicę). Dlaczego tak jest ?

Z pictureBoxa w sumie korzystam pierwszy raz, więc może coś przeoczyłem czy coś, ale jakoś nie mogę tego rozgryźć jak obydwa przypadki zwracają tą samą wartość, a odpowiada mu tylko wersja "sztywna".