Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с графикой в с++ 3.1, Проблема с рисованием 
:(
    Опции темы
N1ko
Дата 16.1.2008, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Здравствуйте... У меня возникла проблемка.  Подскажите пожалуйста как с ней боротться. Перевожу программу в графический режим, создаю несколько объектов.(не принципиально:круги,квадраты и тп). Получаю из этого какое то изображение.  Создаю ещё один квадратик в левом верхнем углу с красными границами. Мне нужно что бы при его движении он ничего не рисовал и при этом не зарисовывал ранее нарисованые предметы. то есть я хочу что бы он действовал как кисточка до активации. Просто двигалась по экрану, но ничего не рисовала. Если это возможно, объясните как сделать пожалуйста. 

И ещё один вопрос, который я думаю поможет мне в решение этой проблемы... Когда я учил паскаль, помню что там можно было блокировать прямоугольную область.(Только вот оператора уже не помню). Есть ли в С++ оператор, выполняющий такие же действия?

Это сообщение отредактировал(а) N1ko - 17.1.2008, 01:06
PM MAIL ICQ   Вверх
orthrus
Дата 17.1.2008, 07:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 400
Регистрация: 30.10.2007
Где: г. Усть-Илимск(Ир кутская обл.)

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



Тебе надо смотреть в сторону PutImage() и GetImage()


--------------------
У того, кто ничего не делает, всегда много помощников.© Л.Н. Толстой
user posted image
PM MAIL ICQ   Вверх
archimed7592
Дата 17.1.2008, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


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

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



Цитата(N1ko @  16.1.2008,  23:44 Найти цитируемый пост)
Когда я учил паскаль, помню что там можно было блокировать прямоугольную область.

Что означает "блокировать область"? Что делал этот "оператор"?


Цитата(N1ko @  16.1.2008,  23:44 Найти цитируемый пост)
Есть ли в С++ оператор, выполняющий такие же действия?

В BC++ 3.1 есть все те же "операторы"(по научному - функции), что были у тебя в паскале в модуле graph. Вообще, в С++ как таковом ничего подобного нет(т.е. обучаешься ты тому, что в последствии никогда не сможешь применить) и, если выбор компилятора не обусловлен требованием преподавателей, то настоятельно рекомендую сменить его на что-нибудь более современное.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
N1ko
Дата 17.1.2008, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(archimed7592 @ 17.1.2008,  14:14)
...
Вообще, в С++ как таковом ничего подобного нет(т.е. обучаешься ты тому, что в последствии никогда не сможешь применить) и, если выбор компилятора не обусловлен требованием преподавателей, то настоятельно рекомендую сменить его на что-нибудь более современное.

Подскажи тогда пожалуйста на чьих продуктах сейчас более удобно, практично и актуально работать:Borland или Microsoft? Я почему то для себя остановился на последнем... И какая версия С++ самая последняя из продуктов Microsoft? 
PM MAIL ICQ   Вверх
bsa
Дата 17.1.2008, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



N1ko, есть еще mingw (IDE: eclipse, code::blocks и др.)
http://www.microsoft.com/express/
PM   Вверх
archimed7592
Дата 17.1.2008, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


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

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



N1ko, начать изучать лучше с Dev-C++ или Сode::Blocks - они наиболее удобны для новичков(в программировании) и, в общем случае, не содержат никаких примочек для написания приложений с GUI. Если же хочется с ходу начать с GUI-приложений(чего я делать не советую), то проще всего будет начать с BCB.

Это сообщение отредактировал(а) archimed7592 - 17.1.2008, 19:05


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
N1ko
Дата 17.1.2008, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Спасибо за помощ. И ещё один вопрос... Может быть и глупый, но я не могу его разобрать.  ЧТо значит последний параметр в операторе getline()? Первые 4 - координаты, а вот для чего последний никак не помуйму. Пмогите неведующему smile

void far getimage(int left, int top, int right, int bottom,void far *bitmap);
PM MAIL ICQ   Вверх
archimed7592
Дата 17.1.2008, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


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

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



Код

char *bitmap = (char *)malloc((right - left) * (bottom - top));
getimage(left, right, top, bottom, bitmap);

Только учти, что если (right - left) * (bottom - top) будет превышать значение 65535, то ничего хорошего у тебя не получится...


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
orthrus
Дата 18.1.2008, 02:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 400
Регистрация: 30.10.2007
Где: г. Усть-Илимск(Ир кутская обл.)

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



Цитата(N1ko @  17.1.2008,  19:24 Найти цитируемый пост)
вот для чего последний никак не помуйму


Это указатель на область памяти в которой будет храниться копируемое тобой изображение.


--------------------
У того, кто ничего не делает, всегда много помощников.© Л.Н. Толстой
user posted image
PM MAIL ICQ   Вверх
sprata
Дата 14.9.2008, 01:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(archimed7592 @  17.1.2008,  19:30 Найти цитируемый пост)
Только учти, что если (right - left) * (bottom - top) будет превышать значение 65535, то ничего хорошего у тебя не получится...

archimed7592, то есть скопировать большое окно, например 500*500 пикселов, для реализации перетаскивание окна мышью никак не получится ? Может быть есть какой-нибудь способ ?

Это сообщение отредактировал(а) sprata - 14.9.2008, 01:18
PM MAIL   Вверх
Mayk
Дата 14.9.2008, 01:30 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

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



Цитата(sprata @  14.9.2008,  05:18 Найти цитируемый пост)

archimed7592, то есть скопировать большое окно, например 500*500 пикселов, для реализации перетаскивание окна мышью никак не получится ? Может быть есть какой-нибудь способ ?

для выделения памяти можно использовать farmalloc. а вообще 500x500 это 250 кб.  половина доступной памяти(без всяких himem'ов, ems'ов, xms'ов). учитывая что часть памяти же отъедатся IDE, всё вообще плачевно:  нехватка памяти может всплыть очень скоро.

советую перечитать
Цитата(archimed7592 @  17.1.2008,  18:14 Найти цитируемый пост)
если выбор компилятора не обусловлен требованием преподавателей, то настоятельно рекомендую сменить его на что-нибудь более современное.




--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
sprata
Дата 14.9.2008, 02:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Mayk, спс за ответ. Выбор компилятора обусловлен именно требованием преподавателей smile
Цитата(Mayk @  14.9.2008,  01:30 Найти цитируемый пост)
для выделения памяти можно использовать farmalloc. а вообще 500x500 это 250 кб.  половина доступной памяти

Так я так и делаю:
Код
long size;
void far* buf;
size = imagesize(0, 0, 500, 500);
buf = farmalloc(size);
getimage(0, 0, 500, 500, buf);

//.....

farfree(buf);


Но при запуске он ничего не рисует. Я пробовал выводить на экран значение переменной size, он выводит 65 535, а 500*500 = 250 000, что значительно больше доступной памяти. В режиме SVGA 256 цвтов1024*768 Максимальный размер картинки который получается сохранить это 250*250 пикселов = 62500. А в режиме VGAHI 16 цветов 640*480 - 350*350 = 122 500 / 2 = 61 250. Получается, что размеры картинок крутятся вокруг этого числа 65 535. Можно ли в настройках BC 3.11 увеличить кол-во памяти ?
PM MAIL   Вверх
bsa
Дата 14.9.2008, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Цитата(sprata @ 14.9.2008,  02:06)
Получается, что размеры картинок крутятся вокруг этого числа 65 535. Можно ли в настройках BC 3.11 увеличить кол-во памяти ?

Нельзя. Это ограничения архитектуры (реальный режим 8086) - сегмент процессора имеет размер 64K (64*1024 = 65536, так как число 0 (NULL) - это код ошибки, то через farmalloc доступно только 65535 байт).
Решение проблемы - защищенный режим. Но для этого нужен другой компилятор, который создает код под ОС, работающую в защищенном режиме.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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