文字色の反転、というより箱と重なっている文字の部分を白色にする、という感じですよね?( 白の文字を反転したら黒なので )
センシルバッファという言葉で検索しても何も引っかからなかったので、何か別の名称の誤りでしょうか?
ともあれ、お察しの通りブレンドで表現することができます( マスクを使用する必要はありません )
載せていただいたURLの画像のような表現をするプログラムを組んでみましたので、よろしければご覧ください m(_ _)m
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
int BoxMaskScreen ;
int StringMaskScreen ;
int BoxStringMixMaskScreen ;
int FontHandle ;
ChangeWindowMode( TRUE ) ;
SetGraphMode( 316, 654, 32 ) ;
// ライブラリ初期化
if( DxLib_Init() == -1 ) return 0 ;
// 箱マスク画面の作成
BoxMaskScreen = MakeScreen( 316, 654, TRUE ) ;
// 文字マスク画面の作成
StringMaskScreen = MakeScreen( 316, 654, TRUE ) ;
// 箱マスクと文字マスクを合成した結果を出力する画面の作成
BoxStringMixMaskScreen = MakeScreen( 316, 654, TRUE ) ;
// 縦書き用のフォントハンドルを作成
FontHandle = CreateFontToHandle( "@MS 明朝", 100, 16, DX_FONTTYPE_ANTIALIASING_4X4 ) ;
// 箱マスク画面に箱を白色で描画
SetDrawScreen( BoxMaskScreen ) ;
ClearDrawScreen() ;
DrawBox( 31, 18, 148, 133, GetColor( 255,255,255 ), TRUE ) ;
DrawBox( 149, 134, 266, 250, GetColor( 255,255,255 ), TRUE ) ;
DrawBox( 31, 251, 148, 366, GetColor( 255,255,255 ), TRUE ) ;
DrawBox( 149, 367, 266, 482, GetColor( 255,255,255 ), TRUE ) ;
DrawBox( 31, 483, 148, 599, GetColor( 255,255,255 ), TRUE ) ;
// 文字マスク画面に文字を白色で描画
SetDrawScreen( StringMaskScreen ) ;
ClearDrawScreen() ;
DrawVStringToHandle( 95, 60, "あいうえお", GetColor( 255,255,255 ), FontHandle ) ;
// 箱マスク画面と文字マスク画面を合成
// ( どちらの画面でも透明ではない部分を抜き出し )
GraphBlendBlt( BoxMaskScreen, StringMaskScreen, BoxStringMixMaskScreen, 255, DX_GRAPH_BLEND_MULTIPLE_A_ONLY ) ;
// 描画先を裏画面に変更
SetDrawScreen( DX_SCREEN_BACK ) ;
// 画面全体を真っ白に塗りつぶす
DrawBox( 0, 0, 316, 654, GetColor( 255,255,255 ), TRUE ) ;
// 箱マスク画面を赤色で描画
SetDrawBright( 153, 52, 0 ) ;
DrawGraph( 0, 0, BoxMaskScreen, TRUE ) ;
SetDrawBright( 255,255,255 ) ;
// 赤色の文字を描画
DrawVStringToHandle( 95, 60, "あいうえお", GetColor( 153, 52, 0 ), FontHandle ) ;
// 箱マスク画面と文字マスク画面の重なっている部分を白色で描画
DrawGraph( 0, 0, BoxStringMixMaskScreen, TRUE ) ;
// 裏画面の内容を表画面に反映
ScreenFlip();
while( ProcessMessage() == 0 )
{
Sleep( 1 ) ;
}
//終了
DxLib_End();
return 0 ;
}
手順としては
1. 箱の部分だけの画像を作成
2. 文字の部分だけの画像を作成
3. 箱と文字が重なっている部分を抽出
4. 裏画面を真っ白にする
5. 裏画面に赤色で四角形と文字を描画する
6. 裏画面に 3 で抽出した『箱と文字が重なっている部分』を白で描画する
となっています、箱と文字が重なっている部分を抽出しているのがポイントです