픽셀을 화면에 수동으로 그리는 방법으로 광경을 나타내지 마십시오.
사용하려는 것은 DirectX 또는 OpenGL입니다. 나는 당신이 열려있는 google를 자르고 읽는 것을 제안한다, 거기 밖으로 읽을 것이다 많게있다.
일단 라이브러리를 다운로드하고 나면 많은 샘플 프로젝트를 살펴보면 시작할 수 있습니다.
이 시점에는 두 가지 방법이 있습니다. 매우 많은 수의 측면이있는 모양을 나타내는 벡터를 계산하는 수학적 방법이 있습니다 (예 : 원 모양). 또는 알파 채널을 사용하여 화면의 원의 질감 (즉 그림)을 그리는 '속임수'방법으로 나머지 텍스처를 투명하게 만들 수 있습니다. (부정 행위는 코딩하기가 쉽고, 실행이 빠르며 유연성이 떨어지더라도 더 나은 결과를 산출합니다.)
수학적으로 이렇게하려면 두 라이브러리 모두 화면에 선을 그릴 수 있으므로 개별 픽셀이 아닌 각 행의 시작점과 끝점의 관점에서 접근해야합니다. 나는 벡터 그래픽을 원한다.
지금은 무거운 수학 할 수는 없지만, 벡터 방식이 (sudo를 코드)처럼 조금 보일 수 있습니다 :
in-param: num_of_sides, length_of_side;
float angle = 360/num_of_sides;
float start_x = 0;
float start_y = 0;
x = startX;
y = startX;
for(int i(0); i < num_of_sides; ++i)
{
float endX, endY;
rotateOffsetByAngle(x, y, x + lenth_of_side, y, angle * i, endX, endY);
drawline(x, y, endX, endY);
x = endX;
y = endY;
}
drawline(float startX, startY, endX, endY)
{
//does code that draws line between the start and end coordinates;
}
rotateOffsetByAngle(float startX, startY, endX, endY, angle, &outX, &outY)
{
//the in-parameters startX, startY and endX, endY describe a line
//we treat this line as the offset from the starting point
//do code that rotates this line around the point startX, startY, by the angle.
//after this rotation is done endX and endY are now at the same
//distance from startX and startY that they were, but rotated.
outX = endX;
outY = endY; //pass these new coordinates back out by reference;
}
을 위의 코드에서 우리는 원의 외부의 주위에 이동 바깥 쪽의 각 개별 선을 하나씩 그립니다. 시작점과 오프셋이있는 각 선에 대해 각도로 오프셋을 회전합니다 (이 각도는 원을 따라 이동할 때마다 증가합니다). 그런 다음 시작점에서부터 옵셋 점까지 선을 그립니다. 다음 반복을 시작하기 전에 시작점을 옵셋 점으로 이동하여 다음 줄이 마지막 줄의 끝에서 시작합니다.
나는 이해할 수 있기를 바랍니다.
[Midpoint circle algorithm] (http://en.wikipedia.org/wiki/Midpoint_circle_algorithm) – Andrey