Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Нестандартные кнопки


Автор: deniska 15.8.2006, 08:21
Привет.
Возникла проблема: 
Необходимо сделать кнопку так, чтобы она принимала форму картинки из bmp какого-нибудь например. Хотелось бы по проще это сделать например на основе TBitButton. Лазил по поиску но ничего не нашел.

Автор: stmamont 15.8.2006, 08:37
посмотри снизу похожие темы

Автор: Gordon 15.8.2006, 08:47
deniska, посмотри здесь http://worldcpp.vingrad.ru/ , может найдешь что-нибудь полезное...

P.S. Вкладка "Button".

Автор: deniska 15.8.2006, 14:05
Решил попробовать с окна в виде рисунка бмп.
В общем получилось обрезать границы окна по рисунку. а как отобразить сам рисунок на окне?
Все примеры на VC. даже текст отрисовать не получилось
Код

      PAINTSTRUCT ps;
      BeginPaint(hWnd,&ps);
      SetBkMode(ps.hdc,TRANSPARENT);
      SetTextColor(ps.hdc,RGB(255,0,0));
      TextOut(ps.hdc, 115,90, "ччччччччччччччч", 11);
      EndPaint(hWnd,&ps);


почему например это в бидере не работает

Автор: Fixin 15.8.2006, 14:48
А в чем ошибка-то?
Код
      HWND hWnd = Application->Handle;
      PAINTSTRUCT ps;
      HDC hdc = BeginPaint(hWnd,&ps);
      SetBkMode(hdc,TRANSPARENT);
      SetTextColor(hdc,RGB(255,0,0));
      TextOut(hdc, 115,90, "ччччччччччччччч", 11);
      EndPaint(hWnd,&ps)


Добавлено @ 14:51 
BeginPaint and EdnPaint можно использовать только в обработчике собsтия WM_PAINT (OnPaint). Во всех других случаях нужно использовать обертку 
Код
HDC dc = GetDC(hWnd);
// рисуем, выводим...
ReleaseDC(hWnd, hdc);

Автор: deniska 15.8.2006, 14:51
да не в чем. просто строка не появляется.
Ну ладно с этим я разобрался.
вместо 
Код

HDC hdc = BeginPaint(hWnd,&ps);

надо
Код

HDC hdc =GetDC (hWnd);


Вопрос остается: как на обрезанной форме отобразить рисунок по которому я ее обрезал.

Автор: Fixin 15.8.2006, 14:56
Приведи код, который ты создал. Ты через регион создаешь область вывода?

Автор: deniska 15.8.2006, 15:01
Код

   Graphics::TBitmap* bmp;
   bmp = new Graphics::TBitmap;
   bmp->LoadFromFile( ExtractFileDir( Application->ExeName )+"\\testimage.bmp" );
   TPoint p;
   p.x = 1;
   p.y = 1;
   HRGN hReg = CreateRgnFromBitmap( bmp, p, true );
   SetWindowRgn( Form1->Handle, hReg, true );

после этого кода форма обрезается как надо.
как поместить в нее изображение из файла??????
CreateRgnFromBitmap - функция создающая регион из файла (ее в факе нашел)

Автор: deniska 16.8.2006, 09:11
Никто не ответил и ладно. С формой разобрался.
Можно создать любой формы, с любым рисунком внутри, и еще мышой таскать за любое место.
Теперь все же к кнопкам:
проблема такая: чтобы я не нарисовал на кнопке, все закрашивается стандартной кнопкной так как видимо билдер делает перерисовку контролов после юзверского Form::OnPaint. (а может причина в другом??)Как это можно обойти?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)