TNB Library
TnbMfcSolidDrawingButton.h
[詳解]
1#pragma once
13#include "TnbBitmapDrawer.h"
14#include "TnbMfcRgnButton.h"
15#include "TnbSolidBitmapMaker.h"
16
17
18
19//TNB Library
20namespace TNB {
21namespace MFC {
22
23
24
75{
76 DEFSUPER(CRgnButton);
77public:
78
90 bool SetAllDrawers(const IDrawable& draw, COLORREF transColor, int persent = 30)
91 {
92 CBitmapImage base = CBitmapDrawer::ToBitmap(draw, transColor);
93 CSize sz = base.GetSize();
94 //
95 HRGN hRgn = base.CreateRgn(transColor);
97 sbm.SetTransColor(transColor);
98 sbm.SetBaseColor(transColor);
99 //
100 CBitmapImage normalBmp; // ノーマル
101 {
102 CBitmapImage mask;
103 mask.Set(sz.cx, sz.cy, RGB(0, 0, 0));
104 normalBmp.Set(base);
105 HDC hDC = normalBmp.GetDC();
106 ::SelectClipRgn(hDC, hRgn);
107 mask.AlphaBlend(hDC, 0, 0, persent);
108 normalBmp.ReleaseDC();
109 normalBmp = sbm.Make(normalBmp);
110 }
111 CBitmapImage hoverBmp = sbm.Make(base); // ホバー&フォーカス
112 CBitmapImage pressBmp = sbm.Make(base, true);// プレス
113 CBitmapImage disableBmp; // 無効
114 {
115 CBitmapImage b;
116 b.Set(base);
117 b.ChangePixelColor(RGB(85,85,85), RGB(85,85,85), RGB(85,85,85));
118 disableBmp.Set(base);
119 HDC hDC = disableBmp.GetDC();
120 ::SelectClipRgn(hDC, hRgn);
121 b.BitBlt(hDC, 0, 0);
122 disableBmp.ReleaseDC();
123 disableBmp = sbm.Make(disableBmp);
124 }
125 _DeleteObject(hRgn);
126 //
127 sz = hoverBmp.GetSize();
128 CBitmapImage bi;
129 bi.Set(sz.cx * 5, sz.cy);
130 bi.Insert(sz.cx * 0, 0, normalBmp);
131 bi.Insert(sz.cx * 1, 0, hoverBmp);
132 bi.Insert(sz.cx * 2, 0, pressBmp);
133 bi.Insert(sz.cx * 3, 0, disableBmp);
134 bi.Insert(sz.cx * 4, 0, hoverBmp);
135 return _super::SetAllBitmaps(bi, transColor);
136 }
137
138private:
140 bool SetBitmap(CBitmapHandle bmp, COLORREF color = CLR_AUTOSELECT);
142 void SetPushedBitmap(CBitmapHandle bmp);
144 void SetDisableBitmap(CBitmapHandle bmp);
146 void SetHoverBitmap(CBitmapHandle bmp);
148 bool SetAllBitmaps(CBitmapHandle bmp, COLORREF color = CLR_AUTOSELECT);
149};
150
151
152
153}; //MFC
154}; //TNB
155
156
157
ビットマップ描画関係のヘッダ
自由型ビットマップボタン関係のヘッダ
立体ビットマップメーカー関係のヘッダ
static CBitmapHandle ToBitmap(const IDrawable &draw, COLORREF color=CLR_INVALID)
[作成] ビットマップ作成.
HBITMAP型ハンドルハンドル
ビットマップイメージ管理クラス
bool Insert(int x, int y, const CBitmapImage &bmpimg, DWORD raster=SRCCOPY, int cx=0, int cy=0)
[挿入] イメージ挿入.
bool BitBlt(HDC hdc, int x, int y, DWORD raster=SRCCOPY) const
[表示] イメージ描画.
HRGN CreateRgn(COLORREF transColor=CLR_AUTOSELECT) const
[作成] リージョン作成.
int ChangePixelColor(COLORREF targetColor, COLORREF drawColor)
[処理] カラー変更.
HDC GetDC(void)
[取得]デバイスコンテキストハンドル取得.
const SIZE & GetSize(void) const
[取得] イメージサイズ取得.
bool Set(int cx, int cy, COLORREF color=CLR_INVALID)
[設定] イメージ設定.
bool ReleaseDC(void)
[設定] デバイスコンテキストハンドル返却.
bool AlphaBlend(HDC hdc, int x, int y, int parsent=100, int cx=0, int cy=0) const
[描画] 半透明処理付イメージ描画.
立体ビットマップメーカークラス
void SetTransColor(COLORREF c)
[設定] 透過色設定.
CBitmapImage Make(CBitmapHandle bh, bool isPressed=false) const
[作成] 立体ビットマップ作成.
void SetBaseColor(COLORREF c)
[設定] 背景色設定.
自由型ビットマップボタンコントロール
立体描画情報ボタンコントロール
bool SetAllDrawers(const IDrawable &draw, COLORREF transColor, int persent=30)
[設定] ビットマップ設定.
TNB Library
Definition: TnbDoxyTitle.txt:2
描画情報インターフェース
Definition: TnbDrawable.h:37