Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di escocat
    Registrato dal
    Feb 2012
    Messaggi
    308

    [VB10] Windows Form - Classi Image e Graphics

    Dopo 10 giorni di full immersion nel passare da VB5 a VB10 ho scoperto che in fondo il VB10 ha "ereditato" quasi tutte le funzioni del VB5, tranne che per una cosa: la grafica. Questa mi sta facendo impazzire ma alla fine sono riuscito a modificare un' immagine e memorizzare il risultato. Solo che mi pongo un problema di tipo "filosofico" perchè non voglio solo vincere ma anche convincere la mia mente di aver afferrato per bene la nuova politica che riguarda la grafica. Al di la della distinzione tra "oggetto grafico Raster" e "oggetto grafico Vettoriale", mi chiedo come mai servono due Classi così estranee tra loro come Image e Graphics se vogliamo tracciare pixel e linee su una stessa immagine. In fondo una linea non è altro che un insieme di pixel, ma se voglio tracciare pixel devo ricorrere alla classe Image mentre per tutto il resto (linee, cerchi, rettangoli ecc.) devo usare un oggetto di tipo (classe) Graphics. E le due classi non sono interscambiabili, o meglio: Graphics può "allacciare" Image tramite Graphics.FromImage, mentre non esiste l' "operazione inversa" Image.FromGraphics. E così il metodo SetPixel è valido solo per Image, mentre ad es. DrawLine è valido solo per Graphics, e se voglio nello stesso tempo tracciare punti e linee devo costruire due oggetti grafici, laddove il buon vecchio VB5 mi permetteva di fare tutto sulla stessa immagine - anzi, addirittura su un controllo Picture. La mia domanda è questa: c'è qualcosa che mi sfugge circa un eventuale metodo Graphics.SetPixel o Image.DrawLine, oppure mi sfugge il perchè di tutta questa pesantezza nella gestione grafica del VB10? Spero di essere stato chiaro e soprattutto non fuori luogo

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Premesso che, secondo me, fai male a studiare il VB.NET (anzi, il framework .NET) a partire dal VB5, ti faccio notare che esiste il

    Metodo Graphics.DrawLine
    http://msdn.microsoft.com/it-it/libr....drawline.aspx

    Graphics è una classe tramite la quale viene incapsulata una superficie GDI+ (diciamo che è la lavagna) mentre la Image è una classe tramite la quale si gestiscono le immagini (bitmap e metafile in genere).

    Ovviamente le immagini possono essere visualizzate sulla lavagna (ma anche modificate) e quindi ha senso "ricavare" la lavagna su cui è visualizzata una immagine, non il contrario.

    Il VB5/6 avevano molte di queste caratteristiche "nascoste" (o implicite). Esisteva sempre una "lavagna" (il device context) che stava "sotto" alle picturebox (e alle parti grafiche in genere) a cui non si poteva accedere se non con le API.

    Insomma, esistono molti punti di contatto tra le due tecnologie ma ti ripeto ... non affrontare una paragonandola all'altra. Parti da zero e vedi come è organizzato il framework e le sue classi; a cosa servono, come si utilizzano l'una in combinazione con l'altra. Dimentica il passato.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di escocat
    Registrato dal
    Feb 2012
    Messaggi
    308
    Posso anche scordare il passato, ma nel presente mi punge sempre quella domanda: perchè sulla lavagna io posso tracciare linee ma non punti? Perchè non esiste Graphics.SetPixel? Perchè tracciare un pixel è così diverso che tracciare una linea? La grafica vettoriale deve seguire regole matematiche, ma il "punto" è la cosa più semplice che segua regole matematiche.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    GDI+ (proprio perché di tipo vettoriale) non prevede una primitiva per il pixel (e di conseguenza l'oggetto Graphics che si basa su GDI+).

    Puoi rimediare con un rettangolo di altezza e larghezza eguale a 1.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di escocat
    Registrato dal
    Feb 2012
    Messaggi
    308
    E già, in fondo un pixel non è altro che una "linea di lunghezza zero" e con DrawLine (10,5,10,5) traccio un pixel. Chissà a livello di "prestazioni" come ci riduciamo. Lavorare con due oggetti anzichè uno solo non è la stessa cosa. Mi chiedo come faceva il VB5 a lavorare con un solo oggetto (Picture.Pset e Picture.Line...) vabbè scordiamoci il passato.

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da escocat
    Mi chiedo come faceva il VB5 a lavorare con un solo oggetto (Picture.Pset e Picture.Line...)
    In realtà potevi lavorare anche con un Form (Form.Line ...) come destinazione ... le due realtà non sono comunque confrontabili.

    vabbè scordiamoci il passato.
    Esatto ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.