Newsgroup: it.comp.lang.visual-basic
Titolo: Richtextbox: bloccare le immagini

in vb 2005, per inserire in una richtextbox un'immagine, faccio così:
        Clipboard.Clear()
        Dim img As System.Drawing.Bitmap
        img = New System.Drawing.Bitmap(PictureBox1.Image)
        Clipboard.SetImage(img)
        TextBox1.ReadOnly = False
        TextBox1.Paste()
        TextBox1.ReadOnly = True
Funziona tutto correttamente, tranne che l'immagine diventa
ridimensionabile, anche se readonly è impostato su true
Disabilitare la textbox: no, perchè devo avere testo e sfondo di
colori diversi da quelli standard, e se faccio enabled=false cambiano
tutti i colori.
Come faccio, quindi, a fare in modo che non si possa ridimensionare
l'immagine? grazie

         TextBox1.ReadOnly = True
Attento!!! A me, il sistema di utilizzare la Clipboard (anche se rapido e 
sintetico) mi ha creato un bel po' di casini....
Ho cambiato sistema, ed ho usato un altro modo: converto prima l'immagine in 
codice "rtf", con una funzione apposita, e poi la inserisco nella RTB con 
assegnazione diretta, esattamente come se fosse del testo.
Funziona molto meglio!
B.

 B.
Ah, grazie del consiglio!
Quindi mi puoi postare il codice che hai usato? E che problemi crea la
clipboard? grazie!

 clipboard? grazie!
Nei sistemi dove la clipboard non è utilizzabile (per policy di sistema, o 
per limitazioni di memoria, o per qualsiasi altro motivo) si verifica un 
errore!
Ed anche controllando l'errore, rimane il fatto che in questa circostanza 
l'inserimento dell'oggetto nel RTB non funziona...
Non so se usi VB6 o VB2005, io uso una funzione che si chiama 
"PictureToRTF", per VB6.
Se usi l'altro VB, probabilmente dovrai fare qualche conversione.
O magari, qualcuno qui può darti il link alla versione VB2005.
La funzione è questa (scrivo solo l'inizio):
'returns the RTF string representation of our picture
Public Function PictureToRTF(pic As StdPicture) As String
    Dim hMetaDC As Long, hMeta As Long, hPicDC As Long, hOldBmp As Long
    Dim Bmp As BITMAP, Sz As Size, Pt As POINTAPI
    Dim sTempFile As String, screenDC As Long
    Dim headerStr As String, retStr As String, byteStr As String
    Dim ByteArr() As Byte, nBytes As Long
    Dim fn As Long, i As Long, j As Long
    sTempFile = App.Path & "\~pic" & ((Rnd * 1000000) + 1000000) \ 1 & 
".tmp"  'some temprory file
    If Dir(sTempFile) <> "" Then Kill sTempFile
    'Create a metafile which is a collection of structures that store a
    'picture in a device-independent format.
    hMetaDC = CreateMetaFile(sTempFile)
...
...
Non la riporto tutta, perché è molto lunga. Se pensi che ti possa servire, 
te la mando per email (ci sono anche tutte le declare da inserire nel modulo 
principale).
B.
ps: Non ricordo dove l'ho trovata, ma faceva parte di un codice pubblico, 
disponibile su qualche sito (forse il sito comune?). Se qualcuno la 
riconosce, batta un colpo... così facciamo prima... 

guarda, per la conversione non dovrei avere problemi.
se mi puoi inviare il codice per email mi faresti un favore, grazie!!

 se mi puoi inviare il codice per email mi faresti un favore, grazie!!
http://www.vbforums.com/showthread.php?t=355994
@Alex

 @Alex
Grazie Alessandro, era proprio quella!!
Per la precisione, la PictureToRTF è esattamente qui:
http://www.vbforums.com/showthread.php?p=2131039
B.

 "Alessandro Baraldi" ha scritto:

Si ho postato il Link alla pagina non quello preciso...
Argomento interessante in ogni caso, potrebbe esserci una soluzione
alternativa
del tipo usare la Clipboard personalizzata come quella esposta in
VbAccelerator(se non ricordo male) con la quale forse si potrebbe
risolvere il problema delle policy, ma la strada che hai indicato è
più veloce e non vedo controindicazioni...
Ciao
@Alex

Grazie!!