Re: DataGrid-Inhalt in ein Picture wandeln?



"Stefan Falz [MVP]" <ms.news@xxxxxxxxxxxxxxxx> schrieb im Newsbeitrag news:75CB7A4C-F85B-4BF8-A3C1-63025219D3F6@xxxxxxxxxxxxxxxx

das ist ganz einfach. Nimm ein Bitmap-Objekt, hol die das Graphics-Objekt dazu und male die Daten dort hinein. Das Bitmap-Objekt schickst du zum Client als jpeg. Das kannst du alles in ein ashx packen und in einer Seite nutzen.

Du weißt aber schon, dass Du ganz schön gemein bist? :))

Hi Stefan
,
was ist daran gemein :-) ?

Hier mal eine einfache Demo:

<%@ WebHandler Language="VB" Class="Handler" %>

Imports System
Imports System.Web
Imports System.Data
Imports System.Drawing
Imports System.Drawing.Imaging
Imports System.Drawing.Drawing2d

Public Class Handler : Implements IHttpHandler

Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest

Testdata1.GenerateData()
Dim dt As DataTable = Testdata1.GetDataTable

Using bmp As New Bitmap(1000, 1000)
Using g As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(bmp)
g.Clear(Color.White)

Dim fnt As New Font(System.Drawing.FontFamily.GenericSansSerif, 12, FontStyle.Regular, GraphicsUnit.Pixel)

For rn As Integer = 0 To dt.Rows.Count - 1
For fn As Integer = 0 To dt.Columns.Count - 1
Dim rect As New Rectangle(fn * 100, rn * 20, 100, 20)
g.DrawString(dt.Rows(rn)(fn).ToString, fnt, Brushes.Black, rect)
g.DrawRectangle(Pens.Black, rect)
Next
Next

context.Response.Clear()
context.Response.ContentType = "image/gif"
context.Response.AddHeader("Content-Disposition", "inline;filename=Tabelle.gif")
bmp.Save(context.Response.OutputStream, ImageFormat.Gif)
context.Response.End()
End Using
End Using

End Sub

Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
Get
Return False
End Get
End Property

End Class

' Class for test data

Public Class Testdata1

Shared dt As System.Data.DataTable

Shared Sub GenerateData()
Dim i As Integer
Try
dt = New System.Data.DataTable("Tab1")
With dt
With .Columns
.Add("ID", GetType(Integer))
With .Item(0)
.AutoIncrement = True
.AutoIncrementSeed = -1
.AutoIncrementStep = -1
End With
.Add("col1", GetType(String))
End With
For i = 1 To 100
Dim r As DataRow = .NewRow
If Rnd() < 0.5 Then
r.Item(1) = "0"
Else
r.Item(1) = "Row " & i.ToString
End If
.Rows.Add(r)
Next
End With
Catch ex As Exception
End Try
End Sub

Shared Function GetDataTable() As DataTable
Return dt
End Function

End Class


--
Viele Gruesse

Peter

.



Relevant Pages

  • Re: appsetting in class doesnt work
    ... Dim cnfg As System.Configuration.Configuration ... Public Class Class1 ... Public Sub SetTestsetting() ... test you should have a setting named TestSetting application scope, ...
    (microsoft.public.dotnet.languages.vb)
  • Re: Interaction between the classes
    ... Imports System.Windows.Forms ... Public Class myKeyClass Implements owf.IMessageFilter ... Overridable Function PreFilterMessageAs Boolean Implements owf.IMessageFilter.PreFilterMessage ... Public Sub New ...
    (microsoft.public.dotnet.framework.compactframework)
  • Re: How can I read the Device ID ?
    ... Imports System.Drawing ... Int32, ByVal lpInBuf As IntPtr, ByVal nInBufSize As Int32, ByVal lpOutBuf ... Public Sub New ... Dim outbuffAs Byte ...
    (microsoft.public.pocketpc.developer)
  • Re: Remoting and Events with VB.NET
    ... TestRemotingLib, ... Public Sub RaiseRemoteEvent() Implements ITestObject.RaiseRemoteEvent ... Imports System.Runtime.Remoting.Channels.Tcp ... Dim ClientProvider As BinaryClientFormatterSinkProvider = New ...
    (microsoft.public.dotnet.framework.remoting)
  • Re: Intercepting the WM_HELP message
    ... Imports System.Drawing ... End Sub ... Public Class MessageFilter ... eMVP" wrote in message ...
    (microsoft.public.dotnet.framework.compactframework)

Loading