Centering Image DB in a "Image Control of ReportViewer
CenterImage()
Funzione che permette di centrare una immagine proveniente da un database nel controllo Image del ReportViewer. Per fare ciò ...
Funzione che permette di centrare una immagine proveniente da un database nel controllo Image del ReportViewer.
Per fare ciò, è sufficiente inserire la seguente funzione nella sezione CODE delle proprietà di un report generato da un controllo ReportViewer, ed il gioco è fatto.
Infatti, per centrare una immagine in un controllo 'Image', basta, dopo aver settato la proprietà Sizing
del controllo a FitProportional, richiare la funzione CenterImage() nella proprietà Value del controllo medesimo.
Ricordatevi che per richiamare, all'interno delle espressioni, la funzione custom così generata dovrete usare la seguente: "Code.CenterImage(...)"
* Public Function CenterImage(ByVal bI As Byte(),ByVal W As double,ByVal H As double) As Byte()
* ' bI: Immagine proveniente da DataBase da centrare (it)
* ' bI: DataBase Image from center (en)
* ' W: Larghezza del controllo contenitore (it)
* ' W: Width of the container control (en)
* ' H: Altezza del controllo contenitore (it)
* ' H: Height of the container control (en)
* Dim WidthDivHeight As double
* WidthDivHeight = W / H
* Dim I As System.Drawing.Image
* I = ConvertImageFromBytes(bI)
* Dim size As System.Drawing.Size
* size = new System.Drawing.Size()
* IF (I.Width < (WidthDivHeight * I.Height) ) THEN
* size.Height = I.Height
* size.Width = (size.Height * WidthDivHeight)
* else
* size.Width = I.Width
* size.Height = (size.Width / WidthDivHeight)
* END IF
* Dim bmp AS System.Drawing.Bitmap
* bmp = new Bitmap(size.Width, size.Height)
* Dim g AS System.Drawing.Graphics
* g = Graphics.FromImage(bmp)
* g.FillRectangle(new SolidBrush(Color.White), new Rectangle(0, 0, size.Width, size.Height))
* g.DrawImageUnscaled(I,((size.Width-I.Width)/2),((size.Height-I.Height)/2),bmp.Width,bmp.Height)
* System.IO.MemoryStream ms = new MemoryStream()
* bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp)
* ms.Position = 0
* Dim Buffer AS Byte()
* Buffer = ms.ToArray()
* ms.Close()
* return Buffer
* End Function