SHOJI's Code
 仕事や趣味で書いた各種言語のプログラミングコード(エクセルVBA,PHP,C/C++/C#,JavaScript等)、その他雑記。
2017.10<<123456789101112131415161718192021222324252627282930>>2017.12
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

昨日書いた記事をやはりC言語で書こうと思って書いたもの。
#include <windows.h>

void WINAPI Fill(
HDC hdc,
int x,
int y,
COLORREF fc,
COLORREF bg
)
{
int x1, x2;

if( GetPixel(hdc, x, y) != bg ) return;
if( GetPixel(hdc, x, y) == fc ) return;

for(x1=x;GetPixel(hdc,x1,y)==bg;x1--)
SetPixel(hdc, x1, y, fc);
x1++;

for(x2=x+1;GetPixel(hdc, x2, y)==bg;x2++)
SetPixel(hdc, x2, y, fc);
x2--;

for(x=x1;x<=x2;x++)
{
if( GetPixel(hdc, x, y-1) == bg )
Fill(hdc, x, y-1, fc, bg);
if( GetPixel(hdc, x, y+1) == bg )
Fill(hdc, x, y+1, fc, bg);
}
}

int PASCAL WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpszCmdLine,
int nCmdShow
)
{
HDC hdc;
POINT pt;
COLORREF bg, col;

hdc = GetDC(NULL);

GetCursorPos(&pt);

bg = GetPixel(hdc, pt.x, pt.y);
col = bg ^ 0xFFFFFF;

Fill(hdc, pt.x, pt.y, col, bg);

ReleaseDC(NULL, hdc);

return 0;
}


テーマ:プログラミング - ジャンル:コンピュータ
コメント
この記事へのコメント
コメントを投稿する

管理者にだけ表示を許可する
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
copyright © 2004-2006 SHOJI, Powered By FC2ブログ all rights reserved.
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。