2011-09-19 1 views
2

Java에서 Graphics2D API를 사용하여 원격 Java 프로세스 화면에 페인트하는 방법이 있습니까? 페인팅 명령어를 스트리밍 및 비 직렬화하는 API는 무엇입니까?Java Graphics2D 스트리밍?

아니면 "API 호출"직렬화/직렬화 메커니즘을 사용해야합니까?

답변

2

정말로 당신이 다루는 미디어의 종류에 달려 있습니다. 동영상을 재생하는 경우 사용중인 코덱이이 작업을 수행하는 API 일 수 있습니다.하지만 검색하려면 주변을 검색해야합니다. Graphics2D는, 도형 그리기, 텍스트 렌더링, 이미지 데이터의 복사 등,보다 기본적인 페인트 작업을위한 것입니다.

자신 만의 스트리밍 알고리즘을 작성하는 경우 필요한 것을 수행하는 PaintEvent 클래스를 정의하는 것처럼 간단 할 수 있습니다. PaintEvent 클래스의 아이디어는 무엇을해야하는지에 대한 지침이 포함되어 있다는 것입니다. 예를 들어, 원격 시스템에 라디오 50이있는 원을 그리면 네트워크를 통해 픽셀 데이터를 전송하는 것이 아니라 기본적으로 "반경 50의 원을 그립니다"라는 메시지를 네트워크를 통해 전송하는 것이 훨씬 효율적입니다 , 클라이언트 측에서 렌더링하도록합니다.

PaintEvent 클래스는,이 같은 것을 볼 것, 생각하는 것 :

public class PaintEvent { 
    public static final int OPER_DRAW_CIRCLE = 0; 
    public static final int OPER_DRAW_RECT = 1; 
    public static final int OPER_DRAW_TEXT = 2; 
    ...etc... 

    int paintOperationID; 
    int[] paintDetails;   // where 'paintDetails' contains data such as a circle's radius, a rectangle's dimensions, the (x, y) location where to render text, etc. 
    java.awt.Color renderColor; 
    String text; 

    public PaintEvent(int paintOperationID, int[] paintDetails, Color renderColor, String text) { 
    ... 
    } 

} 

그래서, paintOperationID이 무엇인지에 따라, 그것은 다른 paintDetails의 데이터를 처리한다. 그리고 OPER_DRAW_TEXT 작업이 아니면 text 필드는 무시됩니다.

어쨌든이를 수행하는 방법 중 하나입니다. 그런 다음 한 곳에서 다른 곳으로 데이터를 가져 오기 위해이 주변의 통신 프로토콜을 설계하면됩니다.

+0

감사합니다. 다른 솔루션이없는 경우 이런 식으로 생각했습니다. 이 문제에 대한 해결책은 매우 간단합니다. 다른 사람이 Graphics2d 프록시, IO/스트리밍, 메시지 처리기를 다른 그래픽 카드에 연결하여 사용할 준비가되어있는 사람은 이미 있다고 생각했습니다. –

+0

하지만 메시지 처리기를 직접 구현해야합니다. –

+0

그게 내가 추천하는 것입니다. 그것은 오래 걸리지 않아야하며, 다른 누군가가 그 일을했다면 공개 할 것이라고 생각합니다. Java2D는 2D 그래픽을 많이 사용하는 라이브러리가 아닙니다. 여기에서 Java의 2D 그래픽은 매우 전문화되어 (게임용 그래픽), 제공되는 애플리케이션 공간 전용 라이브러리를 갖게됩니다. – jefflunt