2013-01-07 2 views
1

문자열을 특정 직사각형 (세로 방향)으로 그려야합니다. 아래 코드는 나에게 와트를 제공하지만 텍스트 흐름은 왼쪽에서 오른쪽으로입니다 , 내가하려고하는 것은 오른쪽에서 왼쪽이다. 오른쪽의 라인 1과 마찬가지로 라인 2는 왼쪽에 있습니다. 나는 또한 변화를했지만 행운은 없다.System.Drawing.Printing 직사각형 가운데 정렬에서 문자열을 세로에서 왼쪽으로 세로로

RectangleF tabbor = new RectangleF(0, 0,borHeight, 44.35F); 
     StringFormat sf = new StringFormat(); 
     //if (cmbDir.SelectedItem.Equals("Vertical")) 
     // sf.FormatFlags = StringFormatFlags.DirectionVertical; 
     sf.LineAlignment = StringAlignment.Center; 
     sf.Alignment = StringAlignment.Center; 
     SolidBrush drawBrush = new SolidBrush(Color.Black); 
     //Do 180 degree Rotatation Transformation 
     ev.Graphics.RotateTransform(90, MatrixOrder.Append);     
     ev.Graphics.TranslateTransform(xPos+44.35F, yPos, MatrixOrder.Append);      
     ev.Graphics.DrawString("T", printFont, Brushes.Black, tabbor, sf); 
     if (cbPreview.Checked) 
      ev.Graphics.DrawRectangle(Pens.Black, Rectangle.Round(tabbor)); 

enter image description here 나는 수행하여

enter image description here

답변

0

당신이 이것을 달성 할 수있다 (이 작동됩니다) 하단 오른쪽에서 왼쪽으로 (지금은 반대로), 라인 위치로 상단에서 텍스트를 찾고 있어요 180도 회전 변환. 아래 코드를 확인하십시오.

 RectangleF tabbor = new RectangleF(0, 0, 44.35F,150.0F);   
     StringFormat sf = new StringFormat(); 
     sf.FormatFlags = StringFormatFlags.DirectionVertical;    
     String drawString = "First Line Second Line"; 
     Font drawFont = new Font("Arial", 16); 
     SolidBrush drawBrush = new SolidBrush(Color.Black); 
     float x = 0F; 
     float y = 0F; 
     StringFormat drawFormat = new StringFormat(); 
     drawFormat.FormatFlags = StringFormatFlags.DirectionVertical; 
     //Do 180 degree Rotatation Transformation 
     ev.Graphics.RotateTransform(180,MatrixOrder.Append); 
     ev.Graphics.TranslateTransform(50, 150,MatrixOrder.Append); 
     ev.Graphics.DrawString(drawString, drawFont, Brushes.Black, tabbor,sf);    
     ev.Graphics.DrawRectangle(Pens.Black, Rectangle.Round(tabbor)); 
+0

찾아보기 주셔서 감사합니다. 그러나 코드에서 예상 한 것을 볼 수 있습니다. 연속적인 주기로 각 페이지마다 특정 위치 (X, Y)를 표시합니다. 왜냐하면 여기에 좌표가 음수로 표시되지 않기 때문에 코드 작성을 방해합니다. pls 좀 더 많은 정보를 알려주십시오. – Jay

+0

FYI, TAB Dividers를 인쇄하려고합니다. 페이지 높이/아니오. 그 다음 직사각형을 그린 다음 직사각형의 중심에 문자열을 그립니다. 나는 엄격하게 포인트에 의존해야만한다. 네 논리에서 X, Y의 네거티브 좌표로 직사각형을 이동시키고 변형시키는 것을 볼 수있다. 직사각형 내부의 텍스트를 변형시켜야하는 rectnagle 좌표를 만지지 않고도 해결할 수 있습니다. – Jay

+0

문자열 위치를 좌표 (0,0)로 설정 한 다음 회전합니다. 회전 (X + 직사각형 너비, Y)을 수행 한 후 편집 된 코드를 확인하십시오. –