Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Врашение картинок !!!

1.8K
08 марта 2008 года
ViToBrother
149 / / 13.05.2007
[CENTER][COLOR="Red"]Привет всем участникам Форума !!!![/COLOR][/CENTER]

Уважаемые программисты у меня вот кокой вопрос. Вот моя программа [ATTACH]2712[/ATTACH], как вы можите заметить в этой программе шарик врашается вокруг другова шарика !!!
Вопрос таков
1. Как зделать чтобы вместо шарика врашалась картинка (например земли)
2. Чтобы картинки не мигали

[COLOR="#ff0000"][RIGHT]Зарание спасибо !!! :rolleyes: [/RIGHT][/COLOR]
1.8K
10 марта 2008 года
ViToBrother
149 / / 13.05.2007
Пожалуйста помогите хоть чемто !!! :cool:
87
10 марта 2008 года
Kogrom
2.7K / / 02.02.2008
Ищите что-нибуть про двойную буферизацию и мировую систему координат. Первое применяется для устранения мигания, второе для вращения картинок.
1.8K
10 марта 2008 года
ViToBrother
149 / / 13.05.2007
Ладно перефразирую вопрос: Как поместить картинку .bmp на экран Single Document в VS 6.0 ????
398
11 марта 2008 года
Alexandoros
630 / / 21.10.2005
Заюзать библиотеку. Например freeimage. Или юзать гді BitBlt
1.8K
11 марта 2008 года
ViToBrother
149 / / 13.05.2007
А можно поподробнее о BitBlt. Или примерчик ?
398
11 марта 2008 года
Alexandoros
630 / / 21.10.2005
Цитата: ViToBrother
А можно поподробнее о BitBlt. Или примерчик ?


Все для тебя, дарагой.

1.8K
11 марта 2008 года
ViToBrother
149 / / 13.05.2007
Пожалуйста напишите тот кусок программы как поместить эту ([ATTACH]2722[/ATTACH]) картинку (.bmp) на экран, прошу очень надо !!!
1.8K
12 марта 2008 года
ViToBrother
149 / / 13.05.2007
[COLOR="Red"][CENTER]Прошу !!! Очень нужна ваша помощь !!![/CENTER][/COLOR]
1.6K
13 марта 2008 года
Tdr
154 / / 13.11.2003
Читай тут: http://www.firststeps.ru/
Если самостоятельно не сможешь с одной функцией разобраться, то тебе никто помочь не сможет.
Кроме того: тебе лучше использовать не BitBlt, а TransparentBlt.
Она отличается тем, что ты сможешь вывести битмап с прозрачностью и белого цвета (или какой тебе еще понадобится) по краям не будет виден.
1.8K
13 марта 2008 года
ViToBrother
149 / / 13.05.2007
Цитата: Tdr
Читай тут: http://www.firststeps.ru/
Если самостоятельно не сможешь с одной функцией разобраться, то тебе никто помочь не сможет.
Кроме того: тебе лучше использовать не BitBlt, а TransparentBlt.
Она отличается тем, что ты сможешь вывести битмап с прозрачностью и белого цвета (или какой тебе еще понадобится) по краям не будет виден.



[COLOR="Red"]Огромное спасибо за помош !!![/COLOR] Я разместил картинку на Экран, но она по прежднему мигает как можно избавется от мигание ?

92
13 марта 2008 года
Тень Пса
2.2K / / 19.10.2006
читай про двойную буферизацию
1.8K
13 марта 2008 года
ViToBrother
149 / / 13.05.2007
Цитата: Тень Пса
читай про двойную буферизацию



А где можно прочитать про двойную буферизацию ? Я вот а Гоогле поискал но не нашол то что надо( примерчики на Visual C++) !!!

1.8K
13 марта 2008 года
ViToBrother
149 / / 13.05.2007
Вот мои попытки двойной буферизации (в коментариях) правда нечего не вышло ! Может ыв поймёте в чём дело !!! [ATTACH]2729[/ATTACH]
6
14 марта 2008 года
George
4.1K / / 05.01.2007
А ты в гугле слова "двойная буферизация" без ошибок написал? ;)
1.6K
14 марта 2008 года
Tdr
154 / / 13.11.2003
Раз уж смог нарисовать, то с двойным буфером сложностей не возникнет.
Это можно реализовать так:
Создаешь битмап в памяти.
Выбираешь его в еще один контекст устройства, совместимый с контекстом твоего приложения.
Всю отрисовку производишь в этот новый контекст.
После отрисовки при помощи BitBlt выводишь содержимое битмапа на экран.
1.8K
14 марта 2008 года
ViToBrother
149 / / 13.05.2007
Цитата: Washington
А ты в гугле слова "двойная буферизация" без ошибок написал? ;)



Xo-xo-xo :(

1.8K
14 марта 2008 года
ViToBrother
149 / / 13.05.2007
Цитата: Tdr
Раз уж смог нарисовать, то с двойным буфером сложностей не возникнет.
Это можно реализовать так:
Создаешь битмап в памяти.
Выбираешь его в еще один контекст устройства, совместимый с контекстом твоего приложения.
Всю отрисовку производишь в этот новый контекст.
После отрисовки при помощи BitBlt выводишь содержимое битмапа на экран.



Вот что я зделал:

Код:
CBitmap membm, earthbm;
    CDC memdc, earthdc;

    memdc.CreateCompatibleDC(pDC);
    membm.CreateCompatibleBitmap(pDC,X,Y);
    memdc.SelectObject(membm);

    earthdc.CreateCompatibleDC(pDC);
//  earthbm.CreateCompatibleBitmap(pDC,X,Y);
    earthbm.LoadBitmap(IDB_BITMAP1);
    earthdc.SelectObject(earthbm);
    earthdc.PatBlt(X,Y,50,50,WHITENESS);

    memdc.BitBlt(X,Y,50,50,&earthdc,0,0,SRCCOPY);

    pDC->BitBlt(X,Y,50,50,&memdc,0,0,SRCCOPY);


Но после этого по экрану стал двигатся куб :eek: ??? [ATTACH]2730[/ATTACH]
1.6K
14 марта 2008 года
Tdr
154 / / 13.11.2003
Попробуй так
Код:
CBitmap membm, earthbm; // Создаешь битмап в памяти.
    CDC memdc, earthdc;     // контекст устройства, совместимый с контекстом твоего приложения.

    RECT re;
    GetClientRect(&re);
    memdc.CreateCompatibleDC(pDC);
    membm.CreateCompatibleBitmap(pDC,re.right-re.left,re.bottom-re.top);
    memdc.SelectObject(membm);

    earthdc.CreateCompatibleDC(pDC);
    earthbm.LoadBitmap(IDB_BITMAP1);
    earthdc.SelectObject(earthbm);

    CBrush br(RGB(255, 255, 255));
    memdc.FillRect(&re, &br);

    memdc.TransparentBlt(X,Y,50,50,&earthdc,0,0,50,50,RGB(255, 255, 255));
    pDC->BitBlt(0,0,re.right-re.left,re.bottom-re.top,&memdc,0,0,SRCCOPY);
1.8K
14 марта 2008 года
ViToBrother
149 / / 13.05.2007
Огромное спасибо Tdr, с вашей помощю у меня всё получилось !!! Но у меня есть вопрос почему мой вариант не работал и в вашем варианте мне пришлось изменить TransparentBlt на BitBlt потому что с TransparentBlt были какиета проблемы возможно потому что у меня стоит VS6 !
1.6K
14 марта 2008 года
Tdr
154 / / 13.11.2003
TransparentBlt капризная штука. Я с ней только пару раз сталкивался и не могу сказать, почему не сработала.
Попробуйте изменить эту строку - CBrush br(RGB(255, 255, 255)); и прописать другой цвет, сразу появится проблема прозрачности.

Ваш вариант не работал по двум причинам:
1. Черный квадрат - по умолчанию битмап закрашен черным.
2.
 
Код:
membm.CreateCompatibleBitmap(pDC,X,Y);
    ...
    memdc.BitBlt(X,Y,50,50,&earthdc,0,0,SRCCOPY);

Размер битмапа от 0*0 до X*Y, а вывод из earthdc идет в координаты от X*Y до (X+50)*(Y+50), т.е. картинка Земли в битмап не попадает.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог