2011-08-16 6 views
2

질문 :
Reporting Services에서 맨 아래에서 맨 위, 가로 가운데 정렬 된 텍스트부터 시작하여 세로가 있어야합니다.C#/VB.NET : 앤티 앨리어스 품질을 향상시키는 방법

유일한 방법은 코드에서 이미지를 만들고이 이미지를 제목 열로 설정하는 것입니다.

아래 코드를 참조하십시오.

기본적으로 앤티 앨리어싱 품질이 매우 엉터리라는 점에서 문제가 없습니다.
개선 할 수있는 방법이 있습니까? ,

SSRS Problem

수직 텍스트가 어떻게 든 창백한, 검은 가득 차지 않은
을 또한 배경 색상에 모든 텍스트 주위가 번지 :
는 아래 스크린 샷을 참조하십시오. 뿐만 아니라이 왼쪽에있는 텍스트보다 대담 나타납니다,하지만 모두 내가
System.Drawing.Text.TextRenderingHint의 다른 모든 값을 시도했습니다

대담 형식 굴림, 크기 8을 가지고있다. * 등 잘 전혀 안티 - 별칭으로 전혀

하지만 적어도 하나는 가장 진절머리 나는 것 같다. 나는 또한 아무 소용이, 이미지 형식을 변경 시도했다 :

Function LoadImage2(ByVal sImageText As String, ByVal sImageTextMax As String) As System.Drawing.Image 
    sImageTextMax = sImageTextMax.PadRight(15) 
    Dim iFontSize As Integer = 8 '//Change this as needed 
    Dim bmpImage As New System.Drawing.Bitmap(1, 1) 
    Dim iWidth As Integer = 0 
    Dim iHeight As Integer = 0 
    Dim bgColor As System.Drawing.Color = System.Drawing.Color.LemonChiffon ' LightGray 
    Dim TextColor As System.Drawing.Color = System.Drawing.Color.Black 

    Dim fsFontStyle As System.Drawing.FontStyle = System.Drawing.FontStyle.Bold 

    '// Create the Font object for the image text drawing. 
    Dim MyFont As New System.Drawing.Font("Arial", iFontSize, fsFontStyle, System.Drawing.GraphicsUnit.Point) 
    '// Create a graphics object to measure the text's width and height. 
    'Graphics(MyGraphics = Graphics.FromImage(bmpImage)) 
    Dim MyGraphics As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(bmpImage) 
    '// This is where the bitmap size is determined. 
    iWidth = MyGraphics.MeasureString(sImageTextMax, MyFont).Width 
    iHeight = MyGraphics.MeasureString(sImageTextMax, MyFont).Height 
    '// Create the bmpImage again with the correct size for the text and font. 
    'bmpImage = New Drawing.Bitmap(bmpImage, New Drawing.Size(iWidth, iHeight)) 

    'inches = pixels/dpi 
    'pixel = inches * dpi 
    '1 centimeter = 0.393700787 inch 
    'pixel = cm * 0.393700787 * dpi 


    ' vice-versa, because 270° turn 
    iHeight = 1 * 0.393700787 * bmpImage.HorizontalResolution 'x DPI 
    iWidth = 2.25 * 0.393700787 * bmpImage.VerticalResolution 'y DPI 


    bmpImage = New System.Drawing.Bitmap(bmpImage, New System.Drawing.Size(iHeight, iWidth)) 

    '// Add the colors to the new bitmap. 
    MyGraphics = System.Drawing.Graphics.FromImage(bmpImage) 
    MyGraphics.Clear(bgColor) 
    MyGraphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias 

    MyGraphics.TranslateTransform(0, iWidth) 
    MyGraphics.RotateTransform(270) 

    Dim iTextStartX As Single = 2 
    Dim iTextStartY As Single = CSng(iHeight)/CSng(2.0) - CSng(iFontSize)/CSng(2.0) 
    iTextStartY -= 2 

    MyGraphics.DrawString(sImageText, MyFont, New System.Drawing.SolidBrush(TextColor), iTextStartX, iTextStartY) 
    MyGraphics.Flush() 
    Return bmpImage 
End Function 


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    Me.PictureBox1.Image = LoadImage2("test", "") 
End Sub 



' This piece is only needed in reporting service itselfs 
Function LoadImage(ByVal strText As String) As Byte() 
    Dim ThisImageFormat As System.Drawing.Imaging.ImageFormat = System.Drawing.Imaging.ImageFormat.Jpeg 


    Dim stream As System.IO.MemoryStream = New System.IO.MemoryStream 
    Dim bitmapBytes As Byte() 
    Dim bmpImage As System.Drawing.Image = LoadImage2(strText, "") 


    bmpImage.Save(stream, ThisImageFormat) 
    bitmapBytes = stream.ToArray 
    stream.Close() 
    bmpImage.Dispose() 
    Return bitmapBytes 
End Function 
+0

이것은 도움이 될 수 있으며 텍스트를 렌더링 할 때 이미지를 사용하지 않는 것이 좋습니다. http://msdn.microsoft.com/en-us/library/da9f790s.aspx – Rodaine

답변

1

내가 그러나 특정 브라우저에서이 문제가되었다. 나는 그것의 브라우저 문제 (IE)를 생각한다. Firefox와 Chrome은 괜찮은 것 같습니다.

결국 수동으로 html로 보고서를 작성하고 그래픽에 HighCharts을 사용하기로 결정했습니다. 그런 다음 PDF로 모두 렌더링했습니다. wkHTMLtoPDF

잘 정리되어 있고 별칭 문제가 없어졌습니다. 나는 당신이 SQL Reporting Services에서 이러한 문제에 봉착 할 수 있다고 생각합니다.

+0

브라우저 문제가 아니며이 그림은 렌더링 된 PDF에서 가져온 것입니다. , 그리고 그것은 모든 브라우저에서 엉뚱하게 보입니다. 결국, 그것은 이미지입니다. –

+0

와우, 질문을 잘못 읽었습니다. – Matt

+0

wkHTMLtoPDF는 자바 스크립트 차트를 렌더링 할 수 있습니까? 결과물도 상호 작용 하는가? –

0

이 작업을 수행하는 유일한 방법은 코드로 이미지를 만들고이 이미지를 제목 열로 설정하는 것입니다.

브라우저에서 이것을 렌더링하는 경우 이미지 만 이동하는 것은 사실이 아닙니다. 당신은 rotate the text with CSS 일 수 있고, 좋은 브라우저에서 멋지게 보이며 IE에서 무난합니다.

물론 PDF를 언급했는데, CSS 트릭은 분명히 적용되지 않습니다. 당신이 생성하고있는이 이미지가 정확히 어디에 묻혀 있는지에 대한 의문은 분명하지 않습니다.

+0

SSRS 보고서의 제목 행이며 SSRS 보고서를 사용자 지정 렌더링 확장 프로그램 작성의 가능성을 포함하여 HTML, PDF, XLS, CSV 등으로 렌더링 할 수 있습니다. –

1

유일한 방법은 코드에서 이미지를 만들고이 이미지를 제목 열로 설정하는 것입니다.

당신은 SQL 서버 리포팅 서비스 2008 R2를 사용하는 경우 이미지를 만들 필요가 없습니다 :

TextAlign: Left 
VerticalAlign: Middle 
WritingMode: Rotate 270 

선명하고 깨끗한 텍스트, 스타일 렌더링 : 다음과 같은 속성을 텍스트 상자를 선택하고 설정 .

+0

R2에만 해당됩니다. 지옥, 나는 이미 어제 그것을 시도하고 그것이 작동하지 않았다. 틀린 텍스트 답변을 보면 btw가 틀립니다. 나는 회전 270 °가 수직 및 수평 정렬의 의미를 혼합한다는 것을 무시하고 있다는 것을 깨달았습니다. 이는 겉보기에는 엉뚱한 행동입니다 ... BTW : TextAlign : Right + VerticalAlign middle + WritingMode : Rotate 270 ... 분명히 캡션의 의미는 0 번 회전시 수평 셀에 상대적입니다. –

+0

사이드 노트에서 원래의 질문에 대답하지 않습니다. 여전히 관련성이 있습니다. SSRS 2005가 있습니다. –

+0

저는 스크린 샷에서 얻은 것을 얻기 위해 "TextAlign : Left"를 원한다고 확신합니다. 2008 년 레퍼런스를 삭제하고 센터를 중간으로 변경하기 위해 내 대답을 편집했습니다. –

관련 문제