У меня возникла одна и та же проблема, и я много искал, но не получил решение в cpp (свободно доступно в C# и VB). Итак, наконец, я решил реализовать его самостоятельно. Если размер вашего изображения больше, чем размер изображения, то только 1 уровень масштабирования (оригинальный размер изображения) вы можете сделать с моей реализацией. Я поможем вам в реализации. В текущей реализации , если вы нажмете левую кнопку мыши, будет ZoomIn и , если вы сделаете правый щелчок мышью, будет ZoomOut.
Предполагая, что вы прочитали файл изображения (.png, .jpg, .bmp, ...) в bmpPicture.
Bitmap^bmpPicture = gcnew Bitmap (strFilename); // если не может помочь
private: System::Void pictureBox1_Click(System::Object^ sender, System::EventArgs^ e) {
MouseEventArgs ^ms = (MouseEventArgs^)e;
if (ms->Button == System::Windows::Forms::MouseButtons::Left)
{
int pbx = ms->X;
int pby = ms->Y;
int img_x = (pbx * mwidth/pbwidth * 1.0f);
int img_y = (pby * mheight/pbheight * 1.0f);
pictureBox1->Location = System::Drawing::Point(pbx - img_x, pby - img_y);
pictureBox1->SizeMode = PictureBoxSizeMode::AutoSize;
pictureBox1->Image = bmpPicture;
}
else if(ms->Button == System::Windows::Forms::MouseButtons::Right)
{
int pbx = ms->X;
int pby = ms->Y;
pictureBox1->Location = System::Drawing::Point(0, 0);
pictureBox1->SizeMode = PictureBoxSizeMode::StretchImage;
pictureBox1->Image = bmpPicture;
}
}
Hope this will help you...
Можете ли вы уточнить, что вы имеете в виду "увеличить изображение внутри изображения коробки"? Вы имеете в виду рисование части изображения в статическом контроле? И, говоря «работа над Windows Forms VS C++ 2010», вы имеете в виду использование управляемого C# кода в C++? – elimad
Я хочу уменьшить локальную часть изображения и показать на картинке. Кроме того, я могу использовать мышь для перемещения области видимости в окне изображения. Этот эффект подобен микроскопу. И я не использую управляемый C#. Спасибо. – Kuo
Хорошо, это понятно, по крайней мере, мы полностью в мире winapi.И, вероятно, в окне изображения вы подразумеваете статический контроль в диалоговом окне. Не так ли? Было бы легко, если бы вы могли поделиться каким-то кодом, а не обязательно всем источником. – elimad