2011-07-03 5 views
2

Java에서 С #의 글꼴 그림을 에뮬레이션해야합니다. 결과는 다음과 같습니다C#과 Java 글꼴의 동등한 표현

내가 글꼴 크기하지만 자바 글꼴 다시 계산 한
Graphics g =this.CreateGraphics(); 
    Font f = new Font("Courier New", 24, FontStyle.Regular, GraphicsUnit.Document); 
    g.FillRectangle(new SolidBrush(Color.White),0,0,400,400); 
    g.DrawLine(new Pen(Color.Black), 0, 100, 200, 100); 
    g.DrawString("Hey go!", f, new SolidBrush(Color.Black), 0, 100); 

는 조금 destorted 보인다.

  Font f = new Font("Courier New", Font.PLAIN, 24 * 120/300).deriveFont((float) (24 * 120./300.)); 
      FontRenderContext fontRenderContext = new FontRenderContext(null, false, true); 
      TextLayout textLayout = new TextLayout("Hey go!", f, fontRenderContext); 
      Graphics graphics = contentPane.getGraphics(); 
      graphics.setColor(new Color(255, 255, 255)); 
      graphics.fillRect(0, 0, 400, 400); 
      graphics.setColor(new Color(0, 0, 0)); 
      graphics.drawLine(0, 100, 200, 100); 
      graphics.setFont(f); 
      Color c = new Color(0, 0, 0); 
      graphics.setColor(c); 
      textLayout.draw((Graphics2D) graphics, 0, 100); 

나는 출력은 동일하게 보이게하기 위해 뭔가를 할 수 있습니까? 추신 : 오류가 발견되어 코드를 업데이트했습니다. 브라우저에서 이미지를 마우스 오른쪽 버튼으로 클릭하여 픽셀 단위로 봅니다.

+0

시스템에서 큰 글꼴을 사용하고 있습니까? (나는 당신의 제목 표시 줄에 큰 "X"아이콘을 기반으로 추측하고 있는데, 마지막으로 대형 글꼴을 사용하는 시스템에서 조작 된 형식이 잘못된 것입니다.) 많은 프로그램에서 취한 가짜 가정을 깨뜨리는 것 같습니다 ...) – sarnold

+0

큰 글꼴 사용. 표준으로 전환해도 문제가 해결되지는 않지만 C#의 모양이 약간 변경됩니다. –

+0

변경 사항이 적용된 후 앤티 앨리어싱을 해제 한 것처럼 아래쪽 이미지가 나타납니다. – Howard

답변

1

약간의 차이점을 두 번 텍스트를 렌더링하는 것만 큼.

textLayout.draw((Graphics2D) graphics, 0, 100); 
graphics.drawString("Hey go!", 0, 100); 

처음으로 TextLayout을 사용하고 두 번째 시간은 직접 문자열을 그립니다. TextLayoutdrawString 메서드가 제공하지 않는 생성자의 마지막 매개 변수에 지정된대로 fractionalMetrics을 사용합니다.

따라서 문자열을 다른 설정으로 두 번 그리면 문자열에 희미한 그림자가 표시됩니다.

drawString으로 두 번째 전화 번호를 제거하고 fractionalMetrics을 선택하면 괜찮을 것입니다.

Example

+0

고맙습니다. 이미 발견했습니다. 그러나 픽셀 대 픽셀 동등성 문제는 다음과 같습니다. ( –