C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Считываю ресурс, Как бы это поменьше извращаться
Schumi
Отправлено: 22.09.2004, 21:23


Машинист паровоза

Группа: Участник
Сообщений: 206



Допустим есть ресурс (jpg),и мне его нужно выводить на экран.
Сейчас я делаю так:
CODE

TJPEGImage *MyJPEG;
MyJPEG = new TJPEGImage();
TResourceStream *JPEGRes;
JPEGRes=new
TResourceStream((int)HInstance,AnsiString("MyJPEG"),RT_RCDATA);
MyJPEG->LoadFromStream(JPEGRes);
JPEGRes->Free();
((TPaintBox*)Sender)->Canvas->Draw(0, 0, MyJPEG);

И у меня возникают такие вопросы:
1) а нельзя обойтись без stream,а сразу как-то грузить в image
2) допустим,я объявил JPEGRes,а потом в цикле делаю new и в конце free. У меня не получается утечки памяти:методом free освобождается вся память
Shura
Отправлено: 23.09.2004, 11:01


Дежурный стрелочник

Группа: Участник
Сообщений: 45



2. Ни в коем случае нельзя освобождать память функцией free() если она была выделена new
Konstantine
Отправлено: 23.09.2004, 11:39


Мастер участка

Группа: Модератор
Сообщений: 545



QUOTE (Shura @ 23/09/2004, 12:03)
Ни в коем случае нельзя освобождать память функцией free() если она была выделена new

не знаю как насчёт JPEG, но Thread-ы токо так и работают!!!
Shura
Отправлено: 23.09.2004, 16:17


Дежурный стрелочник

Группа: Участник
Сообщений: 45



упс, перепутал JPEGRes->Free() и free()
Хлор
Отправлено: 27.09.2004, 02:42


Дежурный стрелочник

Группа: Участник
Сообщений: 78



biggrin.gif
Gedeon
Отправлено: 27.09.2004, 09:31


Ветеран

Группа: Модератор
Сообщений: 1742



Вот попалось на глаза
CODE

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "TstBitmap.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
Graphics::TBitmap* tbm;
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
   : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{

   tbm = new Graphics::TBitmap;
   tbm->LoadFromResourceName((int)HInstance,"MYBITMAP");

 //Image1 — это TImage на форме
  Image1->Canvas->Draw(0, 0, tbm);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
 delete tbm;
}
//---------------------------------------------------------------------------
Schumi
Отправлено: 27.09.2004, 17:22


Машинист паровоза

Группа: Участник
Сообщений: 206



LoadFromResourceName работает только с bmp sad.gif

Вернуться в Вопросы программирования в C++Builder