電子書籍の厳選無料作品が豊富!

この画像でしましまにしたいのですが画像を重ねて右にずらすと画像のような結果に
なってしまいます。どうしたらしましまにできるのでしょうか?

「MoveToExとLineToについて」の質問画像

A 回答 (1件)

>この画像でしましまにしたいのですが


どの画像ですか?

単に白黒のしましま画像を表示するのであれば、
以下のプログラムが参考になりますか?
#include <windows.h>
#include <tchar.h>
#define PROGNAME_T("sample")// プログラム名
#define WCLASSNAME_T("CWindow")// ウインドウクラス名
#define WINDW640
#define WINDH480

LRESULT CALLBACK WndProc(HWND hwnd , UINT msg , WPARAM wp , LPARAM lp) {
HDC hdc;
PAINTSTRUCT ps;
int i;

switch (msg) {
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_PAINT:
//しましまを描画//////////////////////////////////
hdc = BeginPaint(hwnd , &ps);
for(i=0;i<WINDW;i+=2){
MoveToEx(hdc , i , 0 , NULL);
LineTo(hdc , i , WINDH);
}
EndPaint(hwnd , &ps);
return 0;
}
return DefWindowProc(hwnd , msg , wp , lp);
}

INT WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrevInst,LPSTR szStr,INT iCmdShow){
HWND hWnd=NULL;
MSG msg;
WNDCLASSEX wndclass;
static DWORD dwTime;

// ウインドウクラス設定
wndclass.cbSize= sizeof (wndclass) ;
wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInst ;
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName= NULL ;
wndclass.lpszClassName= WCLASSNAME ;
wndclass.hIconSm = LoadIcon (NULL, IDI_APPLICATION) ;

RegisterClassEx (&wndclass) ;// ウインドウクラス登録
// ウインドウ生成
hWnd = CreateWindow(WCLASSNAME,//ウィンドウクラス名
PROGNAME,//ウィンドウ名
WS_OVERLAPPEDWINDOW,//ウインドウスタイルをオーバーラップウインドウに
CW_USEDEFAULT,//ウィンドウ表示位置x座標
CW_USEDEFAULT,//ウインドウ表示位置y座標
WINDW, WINDH,//ウインドウ幅、高さ
NULL, NULL, hInst, NULL);
// ウインドウ表示
ShowWindow (hWnd,SW_SHOW) ;
UpdateWindow (hWnd) ;
while(GetMessage(&msg , NULL , 0 , 0)) DispatchMessage(&msg);
return msg.wParam;

}

この回答への補足

すいません、出来てました!

for(i=0;i<WINDW;i+=2){
MoveToEx(hdc , i , 0 , NULL);
LineTo(hdc , i , WINDH);
}
のところを
for( int i = ps.rcPaint.left; i < ps.rcPaint.right; i = i + 10 ){
MoveToEx( hdc, i, ps.rcPaint.top, NULL );
LineTo( hdc, i, ps.rcPaint.bottom );
}
にしたらこの画像のような結果になってしまったのですが、何が違うのでしょうか?わかりやすい説明よろしくお願いします。

補足日時:2009/12/12 15:25
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
>どの画像ですか?
何もしないというボタン付きウィンドウです。
そのとおりやってみましたが。
やはり他のウィンドウを重ねて右にずらして見ましたが、しましまに再描画されませんでした。

お礼日時:2009/12/12 15:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!