ページ 11

drawlineの一部が消える

Posted: 2013年12月29日(日) 23:14
by 具ロック
下記のように新たなスクリーンにDrawLineで線を書いて回転させたり移動させたりするプログラムを作りました。しかし回転も移動もしない場合など時々一部の線が表示されないときがあります。これを解決するにはどうしたらよいでしょうか。

コード:


#include "DxLib.h"
#include <stdio.h>
void Make();

int Handle;
int dx = 400, dy = 350;
int gx = 130, gy = 737;

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	SetGraphMode(dx, dy, 32);
	SetOutApplicationLogValidFlag(FALSE);
	ChangeWindowMode(TRUE);
	if (DxLib_Init() < 0) return -1;
	Make();
	SetDrawScreen(DX_SCREEN_BACK);

	while (!ProcessMessage())
	{
		ClearDrawScreen();

		DrawRotaGraph2(dx / 2, dy / 2, gx / 2, gy / 2, 0.9, 0, Handle, TRUE, FALSE);
		//DrawRotaGraph2(dx/2, dy/2, gx/2, gy/2+1, 0.9, 0, Handle, TRUE, FALSE);
		//DrawRotaGraph2(dx/2, dy/2, gx/2, gy/2, 0.9, 1, Handle, TRUE, FALSE);

		ScreenFlip();

	}

	DxLib_End();
	return 0;
}

void Make(){
	int i;
	Handle = MakeScreen(gx, gy, 1);
	SetDrawScreen(Handle);

	for (i = 0; i < 30; i++){
		if (i % 2){
			DrawLine(gx / 2 - 62, i * 15 + 8, gx / 2 + 62, i * 15 + 8, -1);
		}
		else{
			DrawLine(gx / 2 - 32, i * 15 + 8, gx / 2 + 32, i * 15 + 8, -1);
		}

	}
}


Re: drawlineの一部が消える

Posted: 2013年12月29日(日) 23:18
by みけCAT
サンプルの関係で、たまたま線が描画されていないのかもしれません。
期待する表示になるかはわかりませんが、

コード:

SetDrawMode(DX_DRAWMODE_BILINEAR);
でバイリニア法を使用するモードにしてみてください。

Re: drawlineの一部が消える

Posted: 2013年12月29日(日) 23:28
by softya(ソフト屋)
縮小時に見えなくなっているで、バイリニア法である程度は防げますが厳密には無理です。
SetDrawMode(DX_DRAWMODE_BILINEAR);

Re: drawlineの一部が消える

Posted: 2013年12月30日(月) 07:51
by 具ロック
ありがとうございます。
縮小は最初からやることにして解決することにしました・
ありがとうございましや