Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Способы загрузки картинок


Автор: =Женек= 17.11.2005, 18:10
Код

//гружу картинку из буфера обмена:

image->Picture->Assign(Clipboard);


//Дальше обрабатываю

              TJPEGImage *Jpg = new TJPEGImage();
              TMemoryStream *Stream = new TMemoryStream();
              Jpg->Assign(img->Picture->Graphic);
              Jpg->CompressionQuality=compression;
              Jpg->Compress();
              Jpg->SaveToStream(Stream);



Но мне хочется сначала загрузить из буфера в TJPEGImage, обработать, а уже потом назначить TImage.

Так вот Jpg->Assign(Clipboard()) не работает.

Как сделать?

Автор: _hunter 17.11.2005, 18:19
LoadFromClipboardFormat() / LoadFromStream()

Автор: =Женек= 17.11.2005, 18:44
Код

         if (pCB->HasFormat(CF_BITMAP))
          {
             TJPEGImage *Jpg = new TJPEGImage();
             Jpg->LoadFromClipboardFormat(CF_BITMAP, pCB->GetAsHandle(CF_BITMAP), 0);
          }



Access violation!
Добавлено @ 18:51
Небольшое исправление в 1 посте - программа должна из буфера достать картинку, придать ей разрешение 800х600, и затем назначить ее Image1. Сжатие будет потом.

Автор: =Женек= 17.11.2005, 19:49
В итоге вышло вот что:



Код

              TPicture * pict = new TPicture;
              Graphics::TBitmap *Bmp=new Graphics::TBitmap;
              pict->LoadFromClipboardFormat(CF_BITMAP, Clipboard()->GetAsHandle(CF_BITMAP), 0);
              Bmp->Height=600;
              Bmp->Width=800;
              Bmp->Canvas->StretchDraw(Bmp->Canvas->ClipRect,pict->Bitmap);
             image->Picture->CleanupInstance();
             image->Picture->Assign(Bmp);
             image->Refresh();


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)