Evento Paint

venerdì 27 luglio 2007 - 07.56

stena Profilo | Junior Member

Mi servirebbe sapere il nome di qualche controllo server grafico che gestisca l'effetto Paint in modo da poter disegnare al suo interno.

grazie

Per maggior chiarezza, lo scopo di questa ricerca è quello di capire se esistono dei componenti/oggetti 'MANAGED' che possano essere inseriti in un sito WEB ASP che notifichino in qualche modo l'evento di rendering.
La necessità è quella di poter accedere all'oggetto che controlla il rendering del componente e di poterlo usare per 'customizzare' il disegno dell'area client del componente stesso.
A questo punto una volta disegnata l'area client del componente, esso dovrebbe trasferire la sua bitmap via HTTP sul browser collegato al sito (così come fanno i controlli di tipo 'Image' i quali leggono un JPEG sul Server e lo trasferiscono sul client)

Brainkiller Profilo | Guru

>La necessità è quella di poter accedere all'oggetto che controlla
>il rendering del componente e di poterlo usare per 'customizzare'
>il disegno dell'area client del componente stesso.
>A questo punto una volta disegnata l'area client del componente,
>esso dovrebbe trasferire la sua bitmap via HTTP sul browser collegato
>al sito (così come fanno i controlli di tipo 'Image' i quali
>leggono un JPEG sul Server e lo trasferiscono sul client)

La tua spiegazione è molto complessa. Diciamo che tutti i componenti grafici funzionano così. Le cose sono due. O ti compri un componente per creare grafici e quindi specificando le varie proprietà ti crei il grafico che viene inviato via HTTP al client, oppure ti crei un componente tu, e ti gestisci il Paint come vuoi e l'invio dei byte al client. La prima soluzione è la meno economica ma la più rapida, la seconda più economica ma richiede molto tempo, dipende anche dal tipo di grafici che devi fare, perchè finchè ti limiti a barre o linee Ok, ma se devi fare torte 3D o cose simili magari è meglio usare componenti già pronti oppure strumenti di reportistica quali Crystal o Reporting Services.

Sui componenti che producono grafici, freeware o a pagamento trovi un Thread qui:
http://www.dotnethell.it/Forum/messages.aspx?ThreadID=16810
Ciao


David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

stena Profilo | Junior Member

Cercherò di essere più chiaro:

ho un applicativo che permette la visualizzazione cartografica di alcune aree stradali.
Tramite la classe Graphics e il suo metodo GetHdc() ottengo l'handle del contesto di periferica associato a tale oggetto Graphics.
Grazie all' handle il client è quindi in grado di disegnare all'interno di tale oggetto.
E' necessario quindi che il controllo fornisca la logica di rendering mediante l'override del metodo OnPaint.
Mentre nella mia applicazione tale ridisegno rimane a livello di client che riceve l'handle intercettando automaticamente il messaggio di windows WM_PAINT; a livello Web dovrebbe essere il server che riceve l'handle ed effettua il disegno per poi rigirarlo al client.
Ad esempio, banalmente:
private void Form1_Paint(object sender, PaintEventArgs e)
{
Pen p = new Pen(Color.Aqua);
Rectangle r = new Rectangle(0, 0, 200, 200);

IntPtr pp = e.Graphics.GetHdc();
// in questo caso mi basta passare il puntatore pp alla dll di cartografia
//.......
}
Qui l'esempio è semplice poichè tramite evento OnPaint ho la classe PaintEventArgs che mi permette di accedere a Graphics.
ovviamente si eseguirebbe un override al metodo paint.

In sintesi l'applicazione web passa alla funzione di ingresso della dll cartografia l'HDC dell'oggetto in cui disegnare.
Cartografia non restituisce nulla, semplicemente disegna nell'oggetto a cui accede tramite l'handle HDC.

ciao
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5