Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с копированием из Canvas 
:(
    Опции темы
Bunny
Дата 1.4.2007, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 22.3.2006

Репутация: 1
Всего: 1



Проблема такая: рисую на Image->Canvas, Image невидимый. А потом функцией Form->Canvas->CopyRect копирую рисунок на форму. Так вот почему-то при изменении размеров формы, видимая часть не изменяется, т.е. рисунок обрубается по краям.
Код

__fastcall TMainForm::TMainForm(TComponent* Owner)
    : TForm(Owner)
{
    RoomDepth = 300;
    LookPoint = -300;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::DrawRoomWalls()
{
    TCanvas * mCan = DrawImage->Canvas;
    int W = ClientWidth/2;
    int H = ClientHeight/2;
    int x = W/(1.0 - RoomDepth/LookPoint);
    int y = H/(1.0 - RoomDepth/LookPoint);

    mCan->Brush->Color = clGrayText;
    mCan->Rectangle(-W, H, W, -H);
    mCan->Refresh();
    mCan->Rectangle(-x, y, x, -y);
    mCan->MoveTo(-x, y);
    mCan->LineTo(-W, H);
    mCan->MoveTo(x, y);
    mCan->LineTo(W, H);
    mCan->MoveTo(x, -y);
    mCan->LineTo(W, -H);
    mCan->MoveTo(-x, -y);
    mCan->LineTo(-W, -H);
    mCan->MoveTo(-x, y);
    mCan->LineTo(-W, y);
    mCan->MoveTo(-x, -y);
    mCan->LineTo(-W, -y);
}

//---------------------------------------------------------------------------
void __fastcall TMainForm::FormPaint(TObject *Sender)
{
    HDC mDC = DrawImage->Canvas->Handle;
/*Переносим координаты в центр и меняем направление осей*/
    SetMapMode(mDC, MM_ISOTROPIC);
    SetWindowExtEx(mDC, ClientWidth, ClientHeight, 0);
    SetViewportExtEx(mDC, ClientWidth, -ClientHeight, NULL);
    SetViewportOrgEx(mDC, ClientWidth/2, ClientHeight/2, NULL);
    DrawRoomWalls();
    TRect rect = ClientRect;
    TRect srect;
    srect.Right = ClientWidth/2;
    srect.Left = -ClientWidth/2;
    srect.Top = ClientHeight/2;
    srect.Bottom = -ClientHeight/2;
    Canvas->CopyRect(rect, DrawImage->Canvas, srect);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormResize(TObject *Sender)
{
    MainForm->Invalidate();
}


Это сообщение отредактировал(а) Bunny - 1.4.2007, 12:41
PM MAIL ICQ   Вверх
Bunny
Дата 1.4.2007, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 22.3.2006

Репутация: 1
Всего: 1



решил проблему
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0544 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.