2014-06-15 5 views
1

Je construis un rapport dans SSRS en utilisant SQL où je convertis un code à barres en une image en utilisant le code ci-dessous, ce code a été pris de here. Je ne suis pas un développeur VB.Net mais ce code fonctionne parfaitement pour moi. Le problème est que la mise en page de mon rapport est avec une image de code à barres verticale plutôt que horizontale, et je ne vois aucune option où je peux faire pivoter l'image OOB. Quelqu'un peut-il m'aider ici pour faire pivoter l'image en utilisant le code ci-dessous.Comment faire pivoter une image dans SSRS

Public Shared Function GenerateImage(ByVal fontName As String, ByVal stringText As String) As Byte() 

    Dim oGraphics As System.Drawing.Graphics 
    Dim barcodeSize As System.Drawing.SizeF 
    Dim ms As System.IO.MemoryStream 
    Dim i As System.Drawing.Image 

    Using font As New System.Drawing.Font(New System.Drawing.FontFamily(fontName), 36) 
    Using tmpBitmap As New System.Drawing.Bitmap(1, 1, System.Drawing.Imaging.PixelFormat.Format32bppArgb) 
    oGraphics = System.Drawing.Graphics.FromImage(tmpBitmap) 
    oGraphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixel 

    barcodeSize = oGraphics.MeasureString(stringText, font) 
    oGraphics.Dispose() 
    End Using 

    Using newBitmap As New System.Drawing.Bitmap(barcodeSize.Width, barcodeSize.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb) 
    oGraphics = System.Drawing.Graphics.FromImage(newBitmap) 
    oGraphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixel 


    Using oSolidBrushWhite As New System.Drawing.SolidBrush(System.Drawing.Color.White) 
    Using oSolidBrushBlack As New System.Drawing.SolidBrush(System.Drawing.Color.Black) 
    oGraphics.FillRectangle(oSolidBrushWhite, New System.Drawing.Rectangle(0, 0, barcodeSize.Width, barcodeSize.Height)) 
    oGraphics.DrawString(stringText, font, oSolidBrushBlack, 0, 0) 

    End Using 

    End Using 

    ms = New System.IO.MemoryStream() 
    newBitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Png) 
    End Using 
     End Using 

    Return ms.ToArray() 
    End Function 

Je suis absolument un NOOB dans VB.Net.

+1

vous aurez peut-être juste besoin de 'bmp.RotateFlip (RotateFlipType.Rotate270FlipNone)' ou similaire selon la direction dans laquelle il est retourné. – Plutonix

+0

@Plutonix - [semble fonctionner pour moi] (http://i.stack.imgur.com/rAtUp.png) –

+1

Les modifications apportées au projet exemple ajoutaient 'newBitmap.RotateFlip (System.Drawing.RotateFlipType.Rotate270FlipNone)' avant 'newBitmap.Save (ms, System.Drawing.Imaging.ImageFormat.Png)' et en définissant ImageProperties dans le rapport sur "Original Size" plutôt que sur "Clip" BTW. –

Répondre

2

La classe Bitmap a construit en plusieurs rotate et mécanismes FLIP:

Dim bmp As Bitmap = <bitmap from somewhere> 

bmp.RotateFlip(RotateFlipType.Rotate270FlipNone) 

Ce fait pivoter l'image de 270 degrés CW, les mêmes que 90 CCW. De nombreuses autres options de rotation existent telles que:

Rotate270FlipXY 
Rotate270FlipY 
Rotate270FlipX 

ainsi que des variantes en fonction de Rotate90... et Rotate180...


Je tiens également à souligner que, plutôt que l'imbrication Utilisation d'instructions, vous pouvez les combiner:

Using font As New Font(New FontFamily(fontName), 36), 
     tmpBitmap As New Bitmap(1, 1, Imaging.PixelFormat.Format32bppArgb) 
     Br As New Brush(.....), 
     otherBMP As New Bitmap(....) 

     <your code here> 

         <rather than here> 

Cela réduit la quantité d'indentation imposée sur le code que beaucoup trouvent annnoying. Vous pouvez également réduire certaines de ces références telles que System.Drawing.Font en ajoutant une déclaration Imports au sommet (using en C#):

Imports System.Drawing 

(apparemment, vous ne pouvez pas utiliser actuellement Imports avec SSRS comme les liens dans le commentaire, pour ne pas tenir compte cette partie).

+1

[On dirait que 'imports' ne peut pas être utilisé dans ce contexte] (http://social.msdn.microsoft.com/Forums/sqlserver/en-US/960d0956-804d-4cf2-9c2a-e6e654d21964/ssrs -et-importations) –

Questions connexes