|
안녕하세요. ListView에 이미지를 그릴려고 합니다. 처음에는 이벤트로 처리를 했습니다. 그런데 여러장을 그릴때 Bitmap변수를 동
적 할당 하여 Bitmap이미지를 모두 저장하다 보니 메모리 소비가 장난이 아니군요.ㄷ 그래서 함수를 이용하여 한개씩 그리고 메모
리를 지울려고 합니다. 그런데 이벤트로 할때는 잘 되는데 이것을 함수로 구현하니까 잘 안되네요.ㄷㄷ 밑에 소스보고 문제점좀 알
려주세요.ㅠ
[예시 1 : 이벤트로 그릴때] 이건 잘되요.
#include <Graphics.hpp>
#include <ComCtrls.hpp>
#include <JPEG.hpp>
#include <ExtCtrls.hpp>
#include <ImgList.hpp>
__fastcall TfrmMain::TfrmMain(TComponent* Owner)
: TForm(Owner)
{
m_bmpBitmap = NULL;
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::Button1Click(TObject *Sender)
{
TJPEGImage* jpgImage;
jpgImage = new TJPEGImage();
m_bmpBitmap = new Graphics::TBitmap();
jpgImage->LoadFromFile("C:\\Test.jpg");
m_bmpBitmap->Assign(jpgImage);
ListView1->Items->Add();
delete jpgImage;
delete m_bmpBitmap;
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::ListView1CustomDrawItem(TCustomListView *Sender, TListItem *Item,
TCustomDrawState State, bool &DefaultDraw)
{
Types::TRect Rect;
Rect = Item->DisplayRect( drBounds );
ListView1->Canvas->StretchDraw( Rect, m_bmpBitmap );
}
//---------------------------------------------------------------------------
[예시 2 : 함수로 그릴때] 이게 잘 안되요
#include <Graphics.hpp>
#include <ComCtrls.hpp>
#include <JPEG.hpp>
#include <ExtCtrls.hpp>
#include <ImgList.hpp>
__fastcall TfrmMain::TfrmMain(TComponent* Owner)
: TForm(Owner)
{
m_bmpBitmap = NULL;
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::Button1Click(TObject *Sender)
{
TJPEGImage* jpgImage;
jpgImage = new TJPEGImage();
m_bmpBitmap = new Graphics::TBitmap();
jpgImage->LoadFromFile("C:\\Test.jpg");
m_bmpBitmap->Assign(jpgImage);
ListView1->Items->Add();
TumbnailSetImage(m_bmpBitmap, 0);
delete jpgImage;
delete m_bmpBitmap;
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::SetImage(Graphics::TBitmap* a_bmpBitmap, int a_nIndex)
{
Types::TRect Rect;
Rect = ListView1->Items->Item[a_nIndex]->DisplayRect( drBounds );
ListView1->Canvas->StretchDraw( Rect, a_bmpBitmap );
}
//---------------------------------------------------------------------------
|