AnsiString pat=Edit1->Text;
HDC dc;
Graphics::TBitmap *bmp=new Graphics::TBitmap;
dc=bmp->Canvas->Handle;
TPicture *Pic = new TPicture();
Pic->RegisterFileFormat(__classid(TJPEGImage), "jpg", "jpg", __classid(TJPEGImage));
Pic->LoadFromFile(pat);
bmp->Width=Pic->Width;
bmp->Height=Pic->Height;
BitBlt(dc,0,0,100,100,Pic->Bitmap->Canvas->Handle,0,0,SRCCOPY);
Image1->Picture->Bitmap->Assign(bmp);
}
TImage не видит файлы
Код:
Но это не срабатывает, вываливает ошибку EFOpenError что не может открыть файл по указанному пути хотя он в тексте ошибки указывается правильный.
Пример пути:
Код:
X:\pics\plans\blank\1.5.jpg
надо сначала грузить в TJPEGImage, а потом
TBitmap::Assign(TJPEGImage*)
Код:
AnsiString pat=Edit1->Text;
Graphics::TBitmap * Bitmap = new Graphics::TBitmap;
TJPEGImage * examp = new TJPEGImage;
jpgfile->LoadFromFile(pat);
Bitmap->Assign(jpgfile);
Image1->Canvas->Draw(10,10,Bitmap);
delete jpgfile;
Graphics::TBitmap * Bitmap = new Graphics::TBitmap;
TJPEGImage * examp = new TJPEGImage;
jpgfile->LoadFromFile(pat);
Bitmap->Assign(jpgfile);
Image1->Canvas->Draw(10,10,Bitmap);
delete jpgfile;
и тут выяснил что он не хочет брать файлы с сетевого диска, делаю копию на C:/ - видит, загружает. Ставлю в пути сетевой Z:/, на котором оригинал, и нифига(
вспомнил, что запускаю билдер от имени администратора, а у него не подключены сетевые диски:)
сдается ошибка в пути, либо не хватает прав на сетевой
Код:
AnsiString pat=Edit1->Text;
Form2=new TForm2(this);
Form2->Visible=true;
Form2->Image1->Picture->Assign(0);
Graphics::TBitmap * Bitmap = new Graphics::TBitmap;
TJPEGImage * examp = new TJPEGImage;
jpgfile->LoadFromFile(pat);
Bitmap->Assign(jpgfile);
Form2->Image1->Canvas->Draw(10,10,Bitmap);
delete jpgfile;
}
Form2=new TForm2(this);
Form2->Visible=true;
Form2->Image1->Picture->Assign(0);
Graphics::TBitmap * Bitmap = new Graphics::TBitmap;
TJPEGImage * examp = new TJPEGImage;
jpgfile->LoadFromFile(pat);
Bitmap->Assign(jpgfile);
Form2->Image1->Canvas->Draw(10,10,Bitmap);
delete jpgfile;
}
Закрывается вторая форма по клику на Image
Код:
Form2->Close();
При этом потребляемая память увеличивается с каждой новой картинкой. Как нужно закрывать форму/изображение чтобы подчищалась память?
Код:
Action = caFree;
Цитата: kot_
В обработчике события OnClose() не забыть указать:
Код:
Action = caFree;
не поможет, надо тогда дочерним объектам Owner-а эту форму прописывать