수직 (위/아래)과 수평 (좌우) 슬라이드가 가능한 위젯을 만들고 싶습니다. 물론 사용자는이 위젯의 스타일을 설정할 것입니다. 문제는 위젯을 수평 방향으로 오른쪽으로 밀어서 테스트 할 때 텍스트 뒤에 페인트 칠한 흔적이 남아 있다는 것입니다. 이 방법을 사용하면 텍스트를 칠할 수 있습니다.swt의 그래픽 문제
private void paintText ()
{
if (getText () != null)
{
Point point = gc.stringExtent (getText ());
if (isHorizontalSlide)
{
if (getMode () == LEFT_MODE)
{
if (pX + point.x + 1 == rectangle.x)
pX = rectangle.width;
gc.drawText (getText () , pX -- , pY);
}
else if (getMode () == RIGHT_MODE)
{
if (pX == rectangle.width)
pX = rectangle.x - point.x + 1;
gc.drawText (getText () , pX ++ , pY);
}
else
{
if (pX + point.x + 1 == rectangle.x)
pX = rectangle.width;
gc.drawText (getText () , pX -- , pY);
}
}
else if (isVerticalSlide)
{
if (getMode () == UP_MODE)
{
if (pY + point.y + 1 == rectangle.y)
pY = rectangle.height;
gc.drawText (getText () , pX , pY --);
}
else if (getMode () == DOWN_MODE)
{
if (pY == rectangle.height)
pY = rectangle.y - point.y + 1;
gc.drawText (getText () , pX , pY ++);
}
else
{
if (pY + point.y + 1 == rectangle.y)
pY = rectangle.height;
gc.drawText (getText () , pX , pY --);
}
}
}
else
throw new NullPointerException ("The text cannot be null!");
}
누군가가 흔적에 어떤 문제가 있다고 말할 수 있습니까?
작동하지 않습니다. 벌써 해봤 어. –