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

 
Загрузка картинки, LoadFromFile
Serjoga
Отправлено: 02.12.2006, 14:24


Ученик-кочегар

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



Привет.
Мне нужно чтобы при нажатии на DrawGrid левой кнопки мыщи в нажатую ячейку помещалась картинка из файла, но программа выдаёт ошибку. Вот код:
CODE

int tmp1;
int tmp2;
TGraphic *pic;
pic->LoadFromFile("Portal.bmp");    //Ошибку выдаёт здесь
DrawGrid1->MouseToCell(X,Y,tmp1,tmp2);
tr=DrawGrid1->CellRect(tmp1,tmp2);
DrawGrid1->Canvas->StretchDraw(tr,pic);


Помогите разобраться в чём дело?
olegenty
Отправлено: 02.12.2006, 16:33


Ветеран

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



ошибка твоя звучит как "Access violation"

переменная pic в момент обращения к ней ещё непроинициализирована и указывает в никуда. кто-то (например ты) сначала должен поместить в неё указатель на экземпляр класса TGraphic.
Serjoga
Отправлено: 02.12.2006, 17:34


Ученик-кочегар

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



Исправил на это: TGraphic *pic=new TGraphic();
Начали вылетать другие ошибки прям при компиляции:
[C++ Error] Unit3.cpp(61): E2352 Cannot create instance of abstract class 'TGraphic'
[C++ Error] Unit3.cpp(61): E2353 Class 'TGraphic' is abstract because of '_fastcall TGraphic::Draw(TCanvas *,const TRect &) = 0'

Что с этим можно сделать?

Отредактировано Serjoga — 02.12.2006, 18:57
BadMan
Отправлено: 02.12.2006, 19:10


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

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



Исходя из сообщения компилятора Tgraphic не является классом для непосредственной работы — надо брать произвольные от него (либо создать самому) — у него есть пустые виртальные функции, которые необходимо определить.
Советую посмотреть иерархию классов TImage и хелп по TGraphic
Serjoga
Отправлено: 02.12.2006, 19:41


Ученик-кочегар

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



Сделал по своему и как нашёл на форуме smile.gif)
DrawGrid1->MouseToCell(X,Y,tmp1,tmp2);
tr=DrawGrid1->CellRect(tmp1,tmp2);
ImageList2->Draw(DrawGrid1->Canvas,tr.Left,tr.Top, 0, true);

Всем спасибо smile.gif

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