Вот набросал программку (для примера), которая загружает BMP картину размером (1600х1200) и затем кнопками право, лево, вверх, вниз, выделяет кусок (160х120) из этой картины и отображает его в Image. Вот внешний вид программки: http://pic.ipicture.ru/uploads/081101/TLG6LnuTiy.jpg
| Код | #include <vcl.h> #pragma hdrstop
#include "BMP.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; Graphics::TBitmap *BitMapBig=new Graphics::TBitmap; // Переместить в заголовок формы Graphics::TBitmap *BitMapSmall=new Graphics::TBitmap; // Переместить в заголовок формы int Ximage = 160,Yimage = 120; // размер малого изображения (выдуман для примера) int y,x; //количество картинок (изначально) //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { x=0;y=0; BitMapBig->LoadFromFile("1_Proba.bmp"); // загрузка файла (большого рисунка 1600 x 1200) BitMapSmall->Width = Ximage; BitMapSmall->Height = Yimage; } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { Image1->Stretch = true; } //--------------------------------------------------------------------------- void __fastcall TForm1::LeftClick(TObject *Sender) { if(x>0) x--; BitBlt(BitMapSmall->Canvas->Handle,0,0,Ximage,Yimage,BitMapBig->Canvas->Handle,x*Ximage,y*Yimage,SRCCOPY); Image1->Picture->Assign(BitMapSmall); } //--------------------------------------------------------------------------- void __fastcall TForm1::BigShowClick(TObject *Sender) { Image1->Picture->Assign(BitMapBig); } //--------------------------------------------------------------------------- void __fastcall TForm1::UpClick(TObject *Sender) { if(y>0) y--; BitBlt(BitMapSmall->Canvas->Handle,0,0,Ximage,Yimage,BitMapBig->Canvas->Handle,x*Ximage,y*Yimage,SRCCOPY); Image1->Picture->Assign(BitMapSmall); } //--------------------------------------------------------------------------- void __fastcall TForm1::RightClick(TObject *Sender) { if(x < (1600 / Ximage -1)) x++; BitBlt(BitMapSmall->Canvas->Handle,0,0,Ximage,Yimage,BitMapBig->Canvas->Handle,x*Ximage,y*Yimage,SRCCOPY); Image1->Picture->Assign(BitMapSmall); } //--------------------------------------------------------------------------- void __fastcall TForm1::DownClick(TObject *Sender) { if(y < (1200 / Yimage -1)) y++; BitBlt(BitMapSmall->Canvas->Handle,0,0,Ximage,Yimage,BitMapBig->Canvas->Handle,x*Ximage,y*Yimage,SRCCOPY); Image1->Picture->Assign(BitMapSmall); } //--------------------------------------------------------------------------- void __fastcall TForm1::FormDestroy(TObject *Sender) { delete BitMapBig; delete BitMapSmall; }
|
|