18 messaggi dal 04 giugno 2003
Girando su questo forum ho trovato come realizzare grafici utilizzando NET Framework, è una routine in C# e fa uso del nomespace System.Drawing. Per puro divertimento volevo provare a fare la stessa cosa con VB ma mi sono bloccato subito nel dimensionamento di una variabile, c'è qualcuno che mi aiuta?

Riporto la parte in c#:

const int width = 200, height = 200;
Bitmap bitmap = new Bitmap(width, height);
Graphics graphics = Graphics.FromImage(bitmap)
//Disegna un rettangolo delle dimensioni dell'immagine riempendolo di bianco
graphics.FillRectangle(new SolidBrush(Color.White), 0, 0, width, height);

poi si impostano i dati(magari letti da un db e si procede,

io avrei proceduto così in VB
ho aggiunto

<add namespace="System.drawing.printing"/>
<add namespace="System.drawing.graphics"/>
<add namespace="System.Drawing.ToolboxBitmapAttribute"/>
<add namespace="System.Drawing.Drawing2"/>
<add namespace="System.Drawing.Design"/>
nel web.config (ma non sono sicuro che servano)


poi ho scritto il codice nella parte VB di una pagina aspx (in una sub)

Dim hei As Integer
Dim wid As Integer
wid = 200
hei = 200
Dim Grafic_Type As New Drawing.Bitmap(wid, hei)

e fino a qui tutto OK ma quando si tratta di definire l'area di disegno non riesco a venirne a capo

cioè come converto questa?
Graphics graphics = Graphics.FromImage(bitmap)

Lo scopo sarebbe quello di realizzare grafici (torte o istogrammi) in un sito web.

Grazie
deta wrote:
cioè come converto questa?
*Graphics graphics = Graphics.FromImage(bitmap)*

C# è case sensitive, per cui Graphics e graphics hanno significato diverso. in VB.NET questo non è vero, per cui ti basta cambiare nome alla variabile, così:

Dim graph as Graphics = ...

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
18 messaggi dal 04 giugno 2003
Ok questo si, anche perchè la riga precedente

C# --> Bitmap bitmap = new Bitmap(width, height);

e già diventata

VB -- > Dim Grafic_Type As New Drawing.Bitmap(wid, hei)

ma
C# -- > Graphics graphics = Graphics.FromImage(bitmap)

da errore se la trasformo ad esempio in
VB -- > Dim Area_grafico As Drawing.Graphics(Grafic_Type)

o altro (ne ho già provate di tutti i colori)

cioè in NET Framework 2.x qual'è l'equivalente nella classe
Graphics di Graphics.FromImage(bitmap)


Grazie sempre e comunque dell'aiuto e di tutti gi spunti che si possono avere ad questo splendido forum
deta wrote:
C#
> Graphics graphics = Graphics.FromImage(bitmap)
da errore se la trasformo ad esempio in
VB
> Dim Area_grafico As Drawing.Graphics(Grafic_Type)  !]

leggi quello che scrivi? non è per niente esempio a ciò che è scritto in C#, che in VB.NET sarebbe, come ti ho già suggerito:
Dim graph as Graphics = Graphics.FromImage(bitmap)

non è che vada usata la fantasia quando non ce ne vuole...

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
18 messaggi dal 04 giugno 2003
Ok!
--------
Visto l'alto numero di accessi al post credo sia utile riportare il primo risultato

1) realizzare una pagina aspx ad esempio con
Microsoft Visual Web Developer 2005 Express Edition
in cui sia presente ub "bottone" chiamato ad esempio Grafico_2d


2) inserire nella parte di codice vb la sub seguente

Protected Sub Grafico_2d_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Grafico_2d.Click
Dim hei As Integer
Dim wid As Integer

Dim Totale As Double
Dim AngoloIniziale As Integer
Dim AngoloCirc As Integer

wid = 640
hei = 480

Dim Grafic_Type As Drawing.Bitmap = New Drawing.Bitmap(wid, hei)
Dim Area_grafico As Drawing.Graphics = Drawing.Graphics.FromImage(Grafic_Type)

Area_grafico.FillRectangle(Drawing.Brushes.White, 0, 0, wid, hei)

AngoloIniziale = 0
Totale = 500
Totale = Convert.ToInt32(Totale)

'==================
' Primo valore 100
'==================
AngoloCirc = 360 * Convert.ToSingle(100) / Totale
Area_grafico.FillPie(Drawing.Brushes.Blue, 0, 0, wid, hei, AngoloIniziale, AngoloCirc)
AngoloIniziale = AngoloIniziale + AngoloCirc

'=====================
' Secondo valore 200
'=====================
AngoloCirc = 360 * Convert.ToSingle(200) / Totale
Area_grafico.FillPie(Drawing.Brushes.Green, 0, 0, wid, hei, AngoloIniziale, AngoloCirc)
AngoloIniziale = AngoloIniziale + AngoloCirc

'==================
' Terzo valore 130
'==================
AngoloCirc = 360 * Convert.ToSingle(130) / Totale
Area_grafico.FillPie(Drawing.Brushes.Yellow, 0, 0, wid, hei, AngoloIniziale, AngoloCirc)
AngoloIniziale = AngoloIniziale + AngoloCirc

'==================
' Quarto valore 70
'==================
AngoloCirc = 360 * Convert.ToSingle(70) / Totale
Area_grafico.FillPie(Drawing.Brushes.Red, 0, 0, wid, hei, AngoloIniziale, AngoloCirc)

Response.ContentType = "image/gif"
Grafic_Type.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif)
Grafic_Type.Dispose()
End Sub

3) provare il risultato dovrebbe essere una torta con quattro spicchi

-------------------------------------------------------------------
è ovvio che non risulterà complicato leggere i valori da un db e generare la torta in modo dinamico

se a qualcuno può servire sto provando (per puro divertimento) a generare un istogramma 2d e 3d e una torta 3d me lo faccia sapere perchè posso mettere tutto il lavoro a libera disposizione della comunità

Ciao e buon laoro a tutti

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.