TNB Library
TnbSelectedBeltDrawer.h
[詳解]
1#pragma once
11#include "TnbDrawable.h"
12#include "TnbBitmapImage.h"
13
14
15
16//TNB Library
17namespace TNB
18{
19
20
21
35{
36 DEFSUPER(CNullDrawer);
37public:
38
45 CSelectedBeltDrawer(COLORREF beltColor, COLORREF backColor, bool isTextInvert = true)
46 : m_beltColor(beltColor), m_backColor(backColor), m_isTextInvert(isTextInvert)
47 {
48 }
49
57 CSelectedBeltDrawer(const SIZE& size, COLORREF beltColor, COLORREF backColor, bool isTextInvert = true)
58 : _super(size), m_beltColor(beltColor), m_backColor(backColor), m_isTextInvert(isTextInvert)
59 {
60 }
61
67 virtual IDrawable* Clone(void) const
68 {
69 return new CSelectedBeltDrawer(m_size, m_beltColor, m_backColor, m_isTextInvert);
70 }
71
79 virtual void Draw(HDC dc, int x = 0, int y = 0) const
80 {
81 CBitmapImage bi;
82 COLORREF col = m_backColor ^ m_beltColor;
83 RECT rect = { x, y, x + m_size.cx, y + m_size.cy };
84 bi.SetFromDC(dc, rect); // 描画範囲を取り込む
85 CBitmapHandle bh = bi.CreateMaskBitmap(m_isTextInvert, m_backColor); //文字のところを抜き出す
86 bi.Set(m_size.cx, m_size.cy, col);
87 bi.Insert(0, 0, bh, m_isTextInvert ? SRCPAINT : SRCAND); //文字のところをマスクする
88 bi.BitBlt(dc, x, y, SRCINVERT);
89 }
90
91private:
92 COLORREF m_beltColor;
93 COLORREF m_backColor;
94 bool m_isTextInvert;
95};
96
97
98
99}; // TNB
ビットマップイメージ管理関係のヘッダ
描画情報関係のヘッダ
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
[表示] イメージ描画.
bool Set(int cx, int cy, COLORREF color=CLR_INVALID)
[設定] イメージ設定.
bool SetFromDC(HDC hdc, const RECT &rect, int cx=0, int cy=0)
[設定] DCからイメージ設定.
HBITMAP CreateMaskBitmap(bool boIsReverse=false, COLORREF transColor=CLR_AUTOSELECT) const
[作成] マスクパターンビットマップ作成.
NULL描画クラス
Definition: TnbDrawable.h:106
SIZE m_size
サイズ
Definition: TnbDrawable.h:109
選択帯描画クラス
virtual void Draw(HDC dc, int x=0, int y=0) const
[描画] 描画.
CSelectedBeltDrawer(COLORREF beltColor, COLORREF backColor, bool isTextInvert=true)
コンストラクタ.
CSelectedBeltDrawer(const SIZE &size, COLORREF beltColor, COLORREF backColor, bool isTextInvert=true)
コンストラクタ.
virtual IDrawable * Clone(void) const
[作成] クローン作成.
TNB Library
Definition: TnbDoxyTitle.txt:2
描画情報インターフェース
Definition: TnbDrawable.h:37