Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco
Nelle ultime settimane abbiamo provato il mouse Logitech G305, la tastiera G316 X 98 e le cuffie G325. Si tratta del setup entry-level di Logitech che ormai, di "entry-level" ha ben poco. Tastiera e mouse offrono prestazioni di livello competitivo con quasi nessuna rinuncia e un livello di personalizzazione estremamente elevato. Le cuffie, invece, hanno mostrato qualche debolezza, ma propongono un ventaglio di funzionalità completo che consente di abbandonare completamente i cavi
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
POCO F9 Pro arriva sul mercato con l'obiettivo di portare prestazioni da smartphone top di gamma in una fascia di prezzo "più aggressiva", senza rinunciare a un comparto fotografico finalmente all'altezza. Dopo averlo testato sul campo, emerge uno smartphone molto più completo rispetto alla generazione precedente, ma anche con alcuni piccoli compromessi che diventano difficili da ignorare quando il prezzo di listino sfiora i 1.000 euro.
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI
Snapdragon Soung Gen 2 è la piattaforma Qualcomm per i dispositivi audio sempre più integrati nel mondo dell'intelligenza artificiale: al prorpio interno tanta potenza elaborativa per gestire al meglio le necessità d'uso dell'agentic AI
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 05-10-2009, 20:54   #1
superbau
Senior Member
 
L'Avatar di superbau
 
Iscritto dal: Aug 2006
Città: Vicenza
Messaggi: 1150
[vb net 2008] movimento e sovrapposizioni

questo è la porzione di codice su cui sto facendo dei test, vorrei fare questa cosa senza dover refreshare il tutto ogni volta.
In pratica ho due o + oggetti. Visto che la trasparenza di buca tutti gli oggetti fini ad arrivare al form, ho cercato di eliminare gli oggetti, facendo in modo che le immagini dei due oggetti appartenessero ad un unico oggetto. Così facendo, che sia uno sofrapposto all'altro, la trasparenza esiste e non bucano niente, pk non ci sono oggetti.

Il problema è muovere questi oggetti, risulta per me, macchinoso e molto pesante visto il refresh da fare, specie se ne avrò + di uno in movimento.

Cosa mi consigliate di fare per avere la possibilità di avere img1 sovrapposta a img2 (o viceversa) con entrabe le img con sfondo trasparente senza che quando si sormontino, non si "buchino" fra di loro facendo alla stesso tempo muoverle?


uff spero di non essere stato troppo contorto ciaoo


ciao


Codice:
Public Class Form1
    ' variabili pubbliche
    Public Poporing As New Point
    Public punto2 As New Point
    Public x, y As Integer
    Public premutoMovX As Integer
    Public img1 As Bitmap = New Bitmap("poporing/poporing-01.bmp")
    Public imgBg As Bitmap = New Bitmap("poporing/russia_field12.bmp")
    Private Sub bGschermo00001(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
        'sfondo
        punto2 = New Point(10, 10)
        e.Graphics.DrawImage(imgBg, punto2)

        'oggetto in movimento
        If premutoMovX = 1 Then
            x = x + 10
        Else
            x = 30
        End If

        Poporing = New Point(x, 25)
        img1.MakeTransparent(Color.Red)
        e.Graphics.DrawImage(img1, Poporing)
        e.Dispose()

    End Sub
   

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        premutoMovX = 1
        Refresh()
    End Sub
End Class
__________________
Motherboard:Asus Commando - CPU: q6600 2.4Ghz - cpu cooler: Asus V40 - RAM: ddr2 8Gb - HD: Samsung 850evo 512Gb- GPU: Asus 770gtx ti - Extra Gpu coller:Manatthan coller 210140 - Monitor: Asus VK266H - Aliment.: SilentMaxX IC-tech 600w - Mouse: MXmaster - SO: windows 10.
superbau è offline   Rispondi citando il messaggio o parte di esso
Old 06-10-2009, 09:10   #2
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da superbau Guarda i messaggi
In pratica ho due o + oggetti. Visto che la trasparenza di buca tutti gli oggetti fini ad arrivare al form, ho cercato di eliminare gli oggetti, facendo in modo che le immagini dei due oggetti appartenessero ad un unico oggetto. Così facendo, che sia uno sofrapposto all'altro, la trasparenza esiste e non bucano niente, pk non ci sono oggetti.

Il problema è muovere questi oggetti, risulta per me, macchinoso e molto pesante visto il refresh da fare, specie se ne avrò + di uno in movimento.

Cosa mi consigliate di fare per avere la possibilità di avere img1 sovrapposta a img2 (o viceversa) con entrabe le img con sfondo trasparente senza che quando si sormontino, non si "buchino" fra di loro facendo alla stesso tempo muoverle?
Non ci ho capito una mazza.
Esattamente cos'è che vuoi fare ?
Comunque, il concetto del BackColor Transparent di .Net è fuorviante. In realtà si limita a copiare il colore di backround del Parent, perciò non direi che i controlli "si bucano" a vicenda.
Forse puoi ottenere risultati migliori, e più velocemente, creando controlli PictureBox, e giocando con le immagini di sfondo e con l'Alpha blending...
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 06-10-2009, 10:00   #3
superbau
Senior Member
 
L'Avatar di superbau
 
Iscritto dal: Aug 2006
Città: Vicenza
Messaggi: 1150
provo a spiegarmi meglio

1)
ho due oggetti A e B
2)
Entrambi hanno parti TRASPARENTI
3)
Entrabi si muovono sulle assi x,y
4)
e qui sta il problemone: quando i due oggetti si sovrappongono, la "fantomatica trasparenza" svanisce e compare nella parte trasparente il form dando l'effetto che l'immagine sotto sia bucata la dove viene intersecata con un'ltra immagine trasparente.

spero di essere stato + chiaro. eCCO io vorrei sapere come evitare che si buchino e che la trasparenza resti tale anche quando si sovrappone 1 o + oggetti.

Nell'esempio che ho riportato ho risolto il problema facendo semplicemente a meno di creare oggetti, però mi risulta ardua la cosa quando tento di spostare una delle due immagini.


Ti allego un screeshoot.

P.s.
Potrei ovviare mettendo lo sfondo nel background del form, ma il problema mi ritornerebbe dopo quando avrò cmq un'altro oggetto da sovrapporre....




immagine originale:



mentre questo è cosa succede nel primo esempio dove ho postato il codice, però appunto mi risulta ardua la movimentazione:



se riescia postarmi un esempio con due img che non si "buchino" o come dici te, " che non prendano il colore del form" te ne sarei grato, son settimane che ci sbatto la mia dura testa di coccio misto marmo.
Se ci si riesce, muovere due oggetti img1 e img2 ec... mi risulta alcquanto semplice e banale rispetto alla strada che avevo intrapreso io conil mio primo codice ciao
__________________
Motherboard:Asus Commando - CPU: q6600 2.4Ghz - cpu cooler: Asus V40 - RAM: ddr2 8Gb - HD: Samsung 850evo 512Gb- GPU: Asus 770gtx ti - Extra Gpu coller:Manatthan coller 210140 - Monitor: Asus VK266H - Aliment.: SilentMaxX IC-tech 600w - Mouse: MXmaster - SO: windows 10.

Ultima modifica di superbau : 06-10-2009 alle 10:25.
superbau è offline   Rispondi citando il messaggio o parte di esso
Old 06-10-2009, 13:52   #4
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
L'operazione di spostamento risulta pesante anche perchè sei andato a scrivere nell'evento Paint, cosa sempre assai delicata, perchè Paint viene chiamato molto frequentemente.

Una soluzione semplice ed efficace è la seguente :

> Ho una Form con 3 PictureBox : pcb_sfondo / pcb_1 / pcb_2.

> pcb_1 e pcb_2 hanno BackColor = Transparent, inoltre è necessario che l'immagine che contengono sia in formato GIF. Quindi l'immagine gif sarà l'oggetto che voglio rappresentare, contornato da un colore ( nel mio caso Black ) opportuno, che serve a gestire la trasparenza dell'oggetto.

> Definisco le proprietà di immagine e trasparenza una volta sola ( Ad es, nel Load ), quindi nessun bisogno di refreshare N volte al secondo con Paint(). :

Codice:
        pcb_sfondo.Image = Image.FromFile(percorso & "sfondo.gif")

        Dim bmp1 As New Bitmap(percorso & "file1.gif")
        bmp1.MakeTransparent(Color.Black)
        pcb_1.Image = bmp1
        pcb_1.Parent = pcb_sfondo

        Dim bmp2 As New Bitmap(percorso & "file2.gif")
        bmp2.MakeTransparent(Color.Black)
        pcb_2.Image = bmp2
        pcb_2.Parent = pcb_sfondo
A questo punto il più è fatto. Oggetti trasparenti e inoltre spostamenti più fluidi. Unico inconveniente, se pcb_1 e pcb_2 si sovrappongono tra loro compare la porzione del quadro esterno della gif interessata dalla sovrapposizione... Vedi se può bastare. Per risolvere quest'ultimo problema credo si debba creare un Clipping Path "deducendolo" dal contorno, ossia dal confine che c'è tra parte interna della gif ( quella da salvare ), e parte esterna ( quella da tagliare )... Non la vedo una cosa tanto semplice.
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 11-10-2009, 22:30   #5
superbau
Senior Member
 
L'Avatar di superbau
 
Iscritto dal: Aug 2006
Città: Vicenza
Messaggi: 1150
niente non riesco a cavare un ragno dal buco... nessuno nuova ideaa su come fare?

a me serve poter sovrappore 2 oggetti con delle trasparenze, lasciando quste ultime intatte, senza che l'oggetto che sormonti prenda il colore o l'immagine del form sottostante. non so.. usando le direct x forse.. non ne ho idea.. bho.. si che su altri programmi è così banale sta cosa... possibile sia così frustrante in vbnet?
__________________
Motherboard:Asus Commando - CPU: q6600 2.4Ghz - cpu cooler: Asus V40 - RAM: ddr2 8Gb - HD: Samsung 850evo 512Gb- GPU: Asus 770gtx ti - Extra Gpu coller:Manatthan coller 210140 - Monitor: Asus VK266H - Aliment.: SilentMaxX IC-tech 600w - Mouse: MXmaster - SO: windows 10.

Ultima modifica di superbau : 11-10-2009 alle 22:33.
superbau è offline   Rispondi citando il messaggio o parte di esso
Old 12-10-2009, 13:07   #6
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
In che linguaggio sarebbe così "banale" ?
Come già detto, devi trovare un modo per fare il clipping dell'area esterna all'immagine. Ad esempio con questo metodo ( in questo caso posso usare immagini di ogni tipo, non solo .gif ) :

Codice:
        pcb_sfondo.Image = Image.FromFile(percorso & "sfondo.bmp")

        Dim bmp1 As New Bitmap(percorso & "img1.bmp")
        pcb_1.Image = bmp1
        pcb_1.Region = GetRegion(bmp1, bmp1.GetPixel(0, 0))
        pcb_1.Parent = pcb_sfondo

        Dim bmp2 As New Bitmap(percorso & "img2.bmp")
        pcb_2.Image = bmp2
        pcb_2.Region = GetRegion(bmp2, bmp2.GetPixel(0, 0))
        pcb_2.Parent = pcb_sfondo
GetRegion esegue il clipping :

Codice:
    Private Function GetRegion(ByVal bm As Bitmap, ByVal bg_color As Color) As Region

        Dim new_region As New Region
        new_region.MakeEmpty()

        Dim rect As New Rectangle
        Dim in_image As Boolean = False
        Dim X As Integer

        For Y As Integer = 0 To bm.Height - 1
            X = 0
            Do While X < bm.Width
                If Not in_image Then
                    If Not bm.GetPixel(X, Y).Equals(bg_color) Then
                        in_image = True
                        rect.X = X
                        rect.Y = Y
                        rect.Height = 1
                    End If
                ElseIf bm.GetPixel(X, Y).Equals(bg_color) Then
                    in_image = False
                    rect.Width = X - rect.X
                    new_region.Union(rect)
                End If
                X = X + 1
            Loop
            If in_image Then
                in_image = False
                rect.Width = bm.Width - rect.X
                new_region.Union(rect)
            End If
        Next Y

        Return new_region

    End Function
Direi che ci siamo.
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 12-10-2009, 15:31   #7
superbau
Senior Member
 
L'Avatar di superbau
 
Iscritto dal: Aug 2006
Città: Vicenza
Messaggi: 1150
ti ringrazio, provo subito. Cmq mi riferivo a flash, la esiste propio la trasparenza.
__________________
Motherboard:Asus Commando - CPU: q6600 2.4Ghz - cpu cooler: Asus V40 - RAM: ddr2 8Gb - HD: Samsung 850evo 512Gb- GPU: Asus 770gtx ti - Extra Gpu coller:Manatthan coller 210140 - Monitor: Asus VK266H - Aliment.: SilentMaxX IC-tech 600w - Mouse: MXmaster - SO: windows 10.
superbau è offline   Rispondi citando il messaggio o parte di esso
Old 12-10-2009, 18:14   #8
superbau
Senior Member
 
L'Avatar di superbau
 
Iscritto dal: Aug 2006
Città: Vicenza
Messaggi: 1150
ora finalmente ho capito per benino, ti sono riconoscente, mi hai aiutato non di poco, grazie ancora
__________________
Motherboard:Asus Commando - CPU: q6600 2.4Ghz - cpu cooler: Asus V40 - RAM: ddr2 8Gb - HD: Samsung 850evo 512Gb- GPU: Asus 770gtx ti - Extra Gpu coller:Manatthan coller 210140 - Monitor: Asus VK266H - Aliment.: SilentMaxX IC-tech 600w - Mouse: MXmaster - SO: windows 10.
superbau è offline   Rispondi citando il messaggio o parte di esso
Old 12-10-2009, 19:51   #9
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da superbau Guarda i messaggi
ti ringrazio, provo subito. Cmq mi riferivo a flash, la esiste propio la trasparenza.
Ah beh, se mi parli di Flash, ovviamente la gestione della grafica vettoriale è sicuramente più veloce che non in un linguaggio multi-purpose.
Ma non tenterei nemmeno un confronto tra ActionScript e VB.NET in Windows ( a netto favore di VB... ).

Quote:
Originariamente inviato da superbau Guarda i messaggi
ora finalmente ho capito per benino, ti sono riconoscente, mi hai aiutato non di poco, grazie ancora
Perfetto.
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco Logitech G325, G305 e G316 X: il tris per chi no...
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio Recensione POCO F9 pro: potenza da vero top di g...
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI Tra audio e AI: la ricetta di Qualcomm per l'age...
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6 Qualcomm annuncia la nuova generazione di SoC Sn...
realme 16 Pro Harry Potter Edition: il nuovo midrange ha uno stemma di Hogwarts che cambia colore al sole! realme 16 Pro Harry Potter Edition: il nuovo mid...
BYD Seagull (Dolphin Surf), l'elettrica ...
Multa milionaria per un data center del ...
F-Droid 2.0 si aggiorna con una nuova gr...
Microsoft ridisegna Copilot: dalla chat ...
Volkswagen porterà 20 videogiochi...
Troppa IA storpia: OpenAI licenzia in tr...
Marathon, Bungie svela i contenuti dell'...
Autunno, tempo di potature: i tagliasiep...
Meta Muse, due sviluppatori riescono a o...
Google AI Pro gratis: festa a sorpresa p...
MacSync colpisce macOS usando i calendar...
L'agente IA cancella 48 mila file in 103...
Jensen Huang avverte: l'AI può aiutare a...
Elettrico Renault in arrivo in Spagna: 6...
Linux, un file AGENTS.md per insegnare a...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 16:26.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v