Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сохранение рисунка при перерисовке формы 
:(
    Опции темы
Xela
Дата 11.4.2008, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Простая рисовалка
Код

void CmouseDlg::OnMouseMove(UINT nFlags, CPoint point)
{
    if( ( nFlags & MK_LBUTTON ) == MK_LBUTTON )
    {
        CClientDC dc( this );
        dc.MoveTo( _prevPoint );
        dc.LineTo( point );
        dc.SetPixel( point, RGB( 0, 0, 255 ) );
        _prevPoint = point;
    }
    CDialog::OnMouseMove(nFlags, point);
}

Как сохранить рисунок после После перекрытия окна проги другим окном??
PM MAIL   Вверх
dizzy1984
Дата 11.4.2008, 05:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Рисуй на битмап, потом ее восстанавливай, заодно получишь эффект отсутствия мерцания. Поищи "двоной буфер" или "double buffer".
PM MAIL   Вверх
Xela
Дата 11.4.2008, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(dizzy1984 @ 11.4.2008,  05:55)
Рисуй на битмап, потом ее восстанавливай, заодно получишь эффект отсутствия мерцания. Поищи "двоной буфер" или "double buffer".

Нужно рисовать на форме!! По идее должно быть простое решение
PM MAIL   Вверх
Andrey44
Дата 11.4.2008, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

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



Xela, рисуйте в онпаинт, а в моусемув делайте инвалидейт


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
SenkraD
Дата 11.4.2008, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 3.2.2006
Где: Украина::Киев

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



Xela, так все рисуют кому не охота лишние разы перерисововатся и считать
Код

CDC     *pDC;
CRect    rcThis;

GetClientRect(&rcThis);
 pDC = GetParent()->GetDC();
if(!m_bIsNeedFullRedraw)
{
    ////////////////////////////////////////////////////////////////////////////////////////


    ////////////////////////////////////////////////////////////////////////////////////////
    CDC        dcMem;
    CBitmap    *pbmpOld; 

    dcMem.CreateCompatibleDC(pDC);
    pbmpOld = dcMem.SelectObject(&m_bmpBackGround);
    dcMem.BitBlt(0, 0, rcThis.Width(), rcThis.Height(), pDC, rcThis.left, rcThis.top, SRCCOPY);

    dcMem.SelectObject(pbmpOld);
}

pDC->DrawState(CPoint(rcThis.left , rcThis.top),  CSize(rcThis.Width(), rcThis.Height()), &m_bmpBackGround, DST_BITMAP, 0);
GetParent()->ReleaseDC(pDC);


Примерно так.  Этом код с одного контрола, тут копируется изображение спод ним для обеспечия прозрачности

Это сообщение отредактировал(а) SenkraD - 11.4.2008, 11:09


--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
Gongex
Дата 13.4.2008, 23:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



читал про такую тему в книге.

Надо создать переменную ,типа points[ 300];   (хранится 300 точек)

и потом через цикл for  рисуешь все 50 или 100 точек.(которые>0)...
потом сохраняешь курсор на следующую points.....

и на Inavalidate() такой цикл поставь.....

Я пробовал для прикола писать такую вещь.Получилось.

Запоминать надо все точки и прикаждом шевелении их все перерисовывать.

а лучше сделать points[2000] чтобы рисовать минут 5.(память на 5 минут)

Это сообщение отредактировал(а) Gongex - 13.4.2008, 23:54
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




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


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

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