Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.08.2009, 18:02   #1
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию Графика в С++ Билдере

Собственно постараюсь объяснить, что я хочу. Думаю все видели данную вещь: наводишь на маленькую картинку, и опа, она уже развернулась в довольно большое изображение. Вот такую вещь я реши сделать в своем приложении. От чего я отталкивался:
1.Кинул на главную форму TImage
2.Связал ее с кодом:
Код:
Form1->Enabled = False;
Form2->Left = Form1->Left + X;
Form2->Top = Form1->Top + Y;
Form2->Show();
Где Form2 – форма, на которой находиться Timage с загруженным большим изображением.
А теперь собственно два вопроса:
1.Может, есть другой способ реализовать подобное? Как – то видел что изображение нарисовано на всплывающей подсказке Hint. Никто не знает, как такое сделать? А если еще и с красивостями (чтоб это все красиво появлялось и исчезало), так это будет просто идеально.
2.Захотел реализовать класс для вывода изображений на TImage, но не могу понять как данное реаизовать. Пытался так:
Код:
class CDraw
{
public:
void AddData();
void DrawGrphic(TImage *);
private:
};

void CDraw::DrawGraphic(TImage *Image);
{
…
Тут рисование на Image
…
}
ничего не вышло.
Искусственный интеллект - фигня по сравнению с естественной глупостью
Impuls1989 вне форума Ответить с цитированием
Старый 13.08.2009, 18:11   #2
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

ниче не понимаю. на кой нужна вторая форма?
пронаследуй класс от timage (или как там с вашими компонентами), добавь private логическое поле isLarged, по дефолту оно false. перегрузи mousemove как то так
Код:
void onMouseMove(...) {
   if (!isLarged) {
      isLarged = true;
      SetMaxImage(); // твоя функция изменения размера TImage
   }
}
потом перегрузи onMouseLeave как нить так
Код:
void OnMouseLeave(...) {
   if (isLarged) {
      isLarged = false;
      SetMinImage(); //функция, которая восстанавливает прежний размер картинки
   }
}
и будет у тебя готовый компонент, наводя мышкой на который, картинка увеличится, уберешь мышку - восстановится
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 13.08.2009, 18:27   #3
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию

Цитата:
Сообщение от pproger Посмотреть сообщение
...и будет у тебя готовый компонент, наводя мышкой на который, картинка увеличится, уберешь мышку - восстановится
Да попробвал. Такая вещь сработала. Вот только вопрос как уменьшать и увеличивать изоражение? Ведь компонент привязан к форме, и за ее границы нельзя выйти, а форма довольно малого размера.
Искусственный интеллект - фигня по сравнению с естественной глупостью
Impuls1989 вне форума Ответить с цитированием
Старый 13.08.2009, 18:43   #4
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

что значит как уменьшать? ну я пользуюсь функцией bitblt, в твоем компоненте скорее всего что то другое имеется. твоя проблема, как из компонента получить размер формы? tihs->parent()->width() или height(), или нечто подобное
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 13.08.2009, 18:53   #5
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию

Нет нет нет. Я не это имею ввиду. Дело вот в чем: допустим у нас форма размером 100x100, а я хочу развернуть изображение до размера 200х200. А это невозможно, так как по размеру, компонент не может быть больше формы (или у формы появятся полосы прокрутки)
Искусственный интеллект - фигня по сравнению с естественной глупостью
Impuls1989 вне форума Ответить с цитированием
Старый 13.08.2009, 20:11   #6
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Просто у TImage нужно стиль WS_POPUP установить, тогда она станет всплывающим окном и сможет вылазить за пределы формы. Как это сделать, думаю, в яндексе имеется информация. Может быть еще WS_EX_TOOLWINDOW и WS_EX_TOPMOST пригодятся. Успешных поисков.
pu4koff вне форума Ответить с цитированием
Старый 13.08.2009, 21:22   #7
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию

В общем решил попробовать выводить картинку, как вспывающую подсказку (hint). Если кто-нибудь знает как это можно реализовать, отпишитесь плиз. Нашел такой пример для delphi, только не знаю как менять фоновую картинку. Буду рад любой помощи.
To pu4koff: ваш пример взял на заметку, если не получится с хинтами, попробую реализовать вашу идею.
Искусственный интеллект - фигня по сравнению с естественной глупостью
Impuls1989 вне форума Ответить с цитированием
Старый 13.08.2009, 21:36   #8
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Цитата:
Нашел такой пример для delphi
Код:
bmp := TBitmap.Create; 
  bmp.LoadfromFile('D:\hint.bmp'); 
Это не оно?
psycho-coder вне форума Ответить с цитированием
Старый 13.08.2009, 21:50   #9
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию

Цитата:
Сообщение от psycho-coder Посмотреть сообщение
Это не оно?
Оно. Я уже это нашел))) Теперь стоит вопрос, как это все перевести в С++.
Искусственный интеллект - фигня по сравнению с естественной глупостью
Impuls1989 вне форума Ответить с цитированием
Старый 13.08.2009, 22:41   #10
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от Impuls1989
Оно. Я уже это нашел))) Теперь стоит вопрос, как это все перевести в С++.
Перевести вот это?
Код:
bmp := TBitmap.Create; 
  bmp.LoadfromFile('D:\hint.bmp');
вот
Код:
Graphics::TBitmap *bmp = new Graphics::TBitmap;
bmp->LoadFromFile("D:\hint.bmp");
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
печать в Билдере Dimarik Общие вопросы C/C++ 5 18.07.2009 19:42
Обращение к строке в БИЛДЕРЕ Crasty Помощь студентам 1 15.05.2009 19:00
Из listBox в paintbox в Билдере slonik123 Общие вопросы C/C++ 0 09.03.2009 15:12
задача на с++ в билдере Барби Фриланс 2 16.12.2008 10:06
Вывод сообщений в Билдере Lanist Общие вопросы C/C++ 1 21.07.2008 10:05