sto cercando di impostare le dimensioni di una TImage a 12000 x 12000 ma ottengo il messaggio
qualcuno sa come aggirare il problemabitmap size too big
sto cercando di impostare le dimensioni di una TImage a 12000 x 12000 ma ottengo il messaggio
qualcuno sa come aggirare il problemabitmap size too big
Non credo si possa.
Normalmente uso timage32.
Se hai voglia guarda qui
http://www.efg2.com/Lab/Graphics/VeryLargeBitmap.htm (supervecchio).
A memoria timage crea una bitmap nella RAM della scheda video, e c'è la possibilità invece di crearne una nella RAM vera e propria
(una device indipended?)
Francamente non ricordo, è passato tanto tempo
EDIT: questo vecchissimo programma
http://www.efg2.com/Lab/Graphics/VeryLargeBitmap.ZIP
mi crea bitmap fino a 16384x16384, per circa 800MB, dopodichè s'incazza e non poco
Ultima modifica di +m+; 16-06-2016 17:18
Uso la bitmap per avere uno sfondo bianco, e inserire al suo interno gli oggetti da lavoro, ovvero rettangoli e cerchi per creare reti stradali. C'è qualche altro modo che mi consenta di avere spazi di lavoro più ampi?
Un WMF?
.
cioè? intendi il formato dell'immagine?
avevo esposto questa domanda qui
http://forum.masterdrive.it/delphi-2...nte-cad-95607/
ma purtroppo non ho mai ottenuto risposta
Per autocad, a memoria, anni e anni fa avevo visto un componente di interfacciamente, mai provato e di cui non ti so dire nulla.
per l'immagine sì, intendo: perchè non provi a creare un'immagine vettoriale, un WMF alla fin fine, invece di una bitmap gigantesca?
un tmetafile, con tmetafilecanvas, poi col draw ci piazzi sopra le BMP.
Francamente non ti so dire cosa succede (mai capitato), cioè se puoi fare un WMF "gigante" in cui poi sopra ci piazzi "piccole" BMP a "pezzi".
Forse, e dico forse, riesci a lavorare con file piccoli invece che con bitmap enormi.
Hai mai pensato, così tanto per dire, di creare addirittura un PDF con sopra le bitmap?
stavo pensando invece di valutare se mettere il tutto in un layer e mettere un rettangolo di sfondo.
Comunque la soluzione migliore sarebbe un ambiente tipo autoCAD dove si ha uno spazio infinito dove poter disegnare.
Un sistema come AutoCAD lavora con una serie di dati e traccia solamente la porzione relativa all'area visibile, con le dimensioni calcolate in base al fattore di zoom.
Devi modificare il modo in cui il tuo sistema lavora: non devi tracciare la grafica su un bitmap gigante e visualizzare quello, bensì tenere in memoria le informazioni relative agli oggetti che devi rappresentare (es. posizione, grandezze, colore, forma, ecc.) e intercettare il messaggio WM_PAINT (facendo semplicemente l'override del metodo Paint, ad esempio ereditando da TGraphicControl se vuoi consumare il minimo delle risorse) andando a usare le informazioni che hai in memoria per rappresentare gli oggetti in quella posizione.
In breve, non devi applicare le informazioni al bitmap e mostrare quello, bensì tracciare direttamente nell'area del controllo di visualizzazione.
Un bitmap puoi usarlo come appoggio se vuoi implementare una sorta di double buffering ed evitare l'effetto di flickering, ma devi limitarti al disegno sul bitmap che rappresenta l'area visibile dell'intero documento, altrimenti sarebbe troppo grande da conservare in memoria, oltreché un bitmap grande è molto più lento da disegnare, quindi non avresti fluidità.
Se vuoi un'ottima (a mio avviso) libreria per gestire grafica ad altre prestazioni, puoi usare Graphics32 (solo Windows), mentre FireMonkey già sfrutta adeguatamente la scheda grafica (se stai usando questa libreria).
Ciao!![]()
Quindi in definitiva dovrei avere la mia rete stradale in memoria o da qualche altra parte e far dare all'utente l'impressione che zoommando o spostandosi nel piano è il foglio che si sposta mentre in realtà l'applicazione, a ogni cambiamento di visuale ridisegna la rete.
Ora però si pone un altro problema, in quanto se il disegno è statico, questo concetto dovrebbe funzionare alla perfezione, ma io ho anche dei veicoli che si muovo sulla rete che al momento mostro attraverso dei TRectangle.
Un esempio di quello che faccio attualmente lo potete vedere in questi due video
https://www.youtube.com/watch?v=ervfH381imU
ma se la rete la gestisco come gestisco la visualizzazione in 3D attraverso un TViewPort3D le cose potrebbero migliorare secondo voi?
https://www.youtube.com/watch?v=XCIDT4CAdvQ