我正在为我的c +大学期末考试写一份交付课程。我已经下载了高清googlemaps截图,但我在面板上绘制它有一个很大的问题。我创建一个矩形作为缩放,只绘制图像的那一部分。但是我的代码似乎没有这样做。我需要在我的面板上绘制矩形作为真实图片的比例图像,因为我将进行缩放,并将地图移动为谷歌地图,所以我需要控制矩形的大小。当我运行此代码时,它只显示图像的一半。
anchoImagen = PB_Mapa->Width/zoom; // zoom=1
altoImagen = PB_Mapa->Height/zoom;
Graphics ^g = this->P_Mapa->CreateGraphics();
int gWidth = (int)g->VisibleClipBounds.Width;
int gHeight = (int)g->VisibleClipBounds.Height;
BufferedGraphicsContext ^espacioBuffer = BufferedGraphicsManager::Current;
// Colocamos el tamaño máximo del Buffer
// el +1 es para evitar errores de memoria.
espacioBuffer->MaximumBuffer = System::Drawing::Size( gWidth + 1, gHeight + 1 );
// Creamos un canvas dentro del espacio del buffer utilizando el canvas
// del formulario
BufferedGraphics ^buffer = espacioBuffer->Allocate(g, Drawing::Rectangle(0, 0, gWidth, gHeight));
buffer->Graphics->Clear(Color::White);
// Declaramos un rectangulo con las dimensiones del pedazo del sprite a utilizar
Bitmap^ imgTransparente = gcnew Bitmap( PB_Mapa->Image);
Drawing::Rectangle porcionAUsar = Drawing::Rectangle(x,y,anchoImagen,altoImagen);
// Dibujamos la imagen en la posicion
buffer->Graphics->DrawImage(imgTransparente, 0,0, porcionAUsar, GraphicsUnit::Pixel);
buffer->Render(g);
// Limpiamos la memoria reservada
delete buffer;
delete espacioBuffer;
delete g;