+ Rispondi al Thread
Pagina 2 di 3 primaprima 123 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 21

Discussione: [vb2017] Errore di memoria insufficiente in user control

  1. #11
    Dev-01 non è in linea Scolaretto
    Post
    445
    Un'altra accortezza tecnica: non richiamare Me.Invalidate ma richiama direttamente il metodo Refresh.

    Se il controllo non ha particolari elevate ambizioni utilizza 'OnPaintBackground' è più veloce di 'OnPaint'.
    Tecnicamente il disegno dovrebbe essere, di base, un po' meno curato ma puoi impostarne lo stesso i seguenti parametri:

    codice:
                .SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
                .CompositingQuality = Drawing2D.CompositingQuality.HighSpeed
                .InterpolationMode = Drawing2D.InterpolationMode.Bicubic
    ed ottenere praticamente lo stesso risultato.
    Ultima modifica di Dev-01; 15-02-2019 12:49 

  2. #12
    L'avatar di glak
    glak non è in linea Scribacchino
    Post
    805
    Grazie ma a me sembra velocissimo non vedo differenze...

  3. #13
    Dev-01 non è in linea Scolaretto
    Post
    445
    E' chiaro che con pochi controlli non la vedi ma mica per questo devi ignorare e/o accontentarti.
    Ultima modifica di Dev-01; 15-02-2019 22:40 

  4. #14
    L'avatar di glak
    glak non è in linea Scribacchino
    Post
    805
    DEV-01 ho seguito il tuo consiglio di utilizzare 'OnPaintBackground' ma non mi fa il Overrides e non vedo il pulsante modificato…
    se ho capito bene …. Ho fatto in questo modo:

    codice:
     Protected Overrides Sub OnPaintBackground(pevent As System.Windows.Forms.PaintEventArgs)
            ' Protected Overrides Sub OnPaint(ByVal pevent As System.Windows.Forms.PaintEventArgs)
            With pevent
                If MeRect.Width = 0 And MeRect.Height = 0 Then Return
                'imposta proprietà dell'oggetto graphics per un disegno ottimale, anche se le prestazioni possono risentirne
                .Graphics.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAliasGridFit
                .Graphics.SmoothingMode = SmoothingMode.HighQuality
                .Graphics.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
                .Graphics.CompositingQuality = Drawing2D.CompositingQuality.HighSpeed
                .Graphics.InterpolationMode = Drawing2D.InterpolationMode.Bicubic
                'cancella il contenuto con il colore di sfondo
                .Graphics.Clear(_Color2)
    
                'verifica lo stato del pulsante
    
                'se è premuto viene solo riempito con un dato colore altrimenti viene sfumato
                Select Case Stato
                    Case State._Down, State._Disable
    
                        .Graphics.FillRectangle(New SolidBrush(_ColorDown), MeRect)
    
                    Case Else
                        'disegna la sfumatura in base alle impostazioni
                        Select Case FadeMode
                        'sfumatura con angolo variabile regolabile dalla proprietà Angolo
                            Case FadeType.Ruotabile
                                Using Pennello = New LinearGradientBrush(MeRect, _Color1, _Color2, _Angolo)
                                    .Graphics.FillRectangle(Pennello, MeRect)
                                End Using
                            'sfumatura orizzontale
                            Case FadeType.Orizzontale
                                Using Pennello = New LinearGradientBrush(MeRect, _Color1, _Color2, 0)
                                    .Graphics.FillRectangle(Pennello, MeRect)
                                End Using
                            'sfumatura verticale
                            Case FadeType.Verticale
                                Using Pennello = New LinearGradientBrush(MeRect, _Color1, _Color2, 90)
                                    .Graphics.FillRectangle(Pennello, MeRect)
                                End Using
                            'sfumatura mediana
                            Case (FadeType.Mediana)
                                Using Pennello = New LinearGradientBrush(MeRect, _Color1, _Color2, 90)
                                    'modifica il pennello affinchè disegni una sfumatura a campana
                                    Pennello.SetSigmaBellShape(0.5, 0.5)
    
                                    .Graphics.FillRectangle(Pennello, MeRect)
                                End Using
                            'sfumatura radiale che dal centro sfuma all'esterno
                            Case FadeType.Radiale
                                Using pat = New GraphicsPath()
                                    pat.AddEllipse(MeRect)
                                    Using pennello = New PathGradientBrush(pat)
                                        pennello.CenterColor = _Color1
                                        pennello.SurroundColors = {_Color2}
                                        .Graphics.FillRectangle(pennello, MeRect)
                                    End Using
                                End Using
    
                        End Select
    
                End Select
    
                'disegna il bordo con un colore semitrasparente
                Using penna As New Pen(Color.FromArgb(192, 0, 0, 0), 2)
                    .Graphics.DrawPath(penna, RoundPath)
                End Using
    
                'disegna il testo centrato sul controllo
                Using al As New StringFormat
                    al.LineAlignment = StringAlignment.Center
                    al.Alignment = StringAlignment.Center
                    .Graphics.DrawString(Me.Text, Me.Font, New SolidBrush(Me.ForeColor), MeRect, al)
                End Using
            End With
        End Sub
    Ultima modifica di glak; 16-02-2019 07:32 

  5. #15
    Dev-01 non è in linea Scolaretto
    Post
    445
    Richiami 'Refresh' o 'Invalidate'?

  6. #16
    L'avatar di glak
    glak non è in linea Scribacchino
    Post
    805
    Ho utilizzato come da te suggerito (Refresh)

  7. #17
    Dev-01 non è in linea Scolaretto
    Post
    445
    Non saprei.

    Oggi ho creato una form e trascinato un pulsante per avere del feedback da una funzione prova.
    Salvo.
    Compilo.
    La form parte ma il pulsante non c'è.
    Verifico le proprietà della form (nuova in un progetto appena creato) e del pulsante (nuovo e del framework!), tutto a posto.
    Il designer lo fa vedere ma a runtime sparisce.
    Aggiungo altri controlli e spariscono tutti ma solo a runtime.

    Ieri sera ho popolato una form con vari controlli.
    Salvo e chiudo.
    Stamattina avvio la finestra e Visual Studio mi dice che è impossibile selezionare la form come oggetto di avvio perché non è la prima classe.

    In un progetto nuovo vuoto! Ma stiamo scherzando?

    Tutto questo per dirti che a volte non sei tu a sbagliare qualcosa...
    Prova a ripristinare VS.

  8. #18
    L'avatar di glak
    glak non è in linea Scribacchino
    Post
    805
    poi postare il codice da te corretto… vediamo se sono io che sbaglio qualcosa…..
    P.S.
    guarda i messaggi privati…..

  9. #19
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    16,208
    Blogs
    5
    NON si usano i messaggi al posto del forum.
    Ultima modifica di AntonioG; 19-02-2019 14:27 
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  10. #20
    L'avatar di glak
    glak non è in linea Scribacchino
    Post
    805
    Antonio si chiamano messaggi privati…. e non riguardano il treed in questione, e quindi questo richiamo e fuori luogo…..

+ Rispondi al Thread
Pagina 2 di 3 primaprima 123 ultimoultimo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi