aLiEn |
Отправлено: 27.07.2005, 07:25 |
|
Не зарегистрирован
|
Hello, All!
Есть главный класс в котором GDI+ инициализируется. Так же там объявляю
Gdiplus::Graphics* GM; // класс GDI+
Есть другой класс где я просто создаю панель (хочу на ней рисовать). Теперь создаем проект и
инициализируем главный класс
GP = new TERedGDIP();
следом создаю панель, на которой я буду рисовать
if( GP->CreateGP( Form1 ) )
ShowMessage(" YES "); // для своей проверки
GP->Document->Area->Height = 400;
GP->Document->Area->Width = 600;
GP->SetPageUnit( UnitPixel );
В главном классе это описано так
CODE |
bool __fastcall TERedGDIP::CreateGP( TForm* MainForm )
{
GM = 0;
Document = 0;
try
{
Document = new TDocGDIP( MainForm );
GM = new Gdiplus::Graphics( Document->hDC );
}
catch(...)
{
bGM = false;
delete Document;
return false;
}
bGM = true;
return true;
}
|
Все создается, все видится на главной форме проги. Но вот захотел нарисовать
линию и написать, ан не вышло.
CODE |
void __fastcall TERedGDIP::OutTextT( )
{
WCHAR welcome[]=L"Привет GDI+!";
RECT rc;
Gdiplus::Pen blackPen(Gdiplus::Color(255, 0, 0, 0), 3);
int x1 = 100;
int y1 = 100;
int x2 = 500;
int y2 = 200;
GM->DrawLine(&blackPen, x1, y1, x2, y2);
Gdiplus::RectF bounds(0, 0, 500, 500);
LinearGradientBrush brush(bounds, Gdiplus::Color(130, 255, 0, 0),
Gdiplus::Color(255, 0, 0, 255),
Gdiplus::LinearGradientModeBackwardDiagonal);
Gdiplus::StringFormat format;
format.SetAlignment(Gdiplus::StringAlignmentCenter);
format.SetLineAlignment(Gdiplus::StringAlignmentCenter);
Gdiplus::Font font(L"Arial", 30, Gdiplus::FontStyleBold);
GM->DrawString(welcome, -1, &font, bounds, &format, &brush);
}
|
Все отрабатывается, но на панели ничего не видно. Если же в этой функции
создаю Gdiplus::Graphics g( Document->hDC ); (соответственно везде меняю
GM-> на g. ), все работает.
Почему? Куда смотреть, куда рыть?
СПАСИБО! |
|
timson |
Отправлено: 28.07.2005, 07:59 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 82
|
смотреть в MSDN, там много примеров
|
|
|