Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto
be quiet! debutta nel settore mouse da gaming con Dark Perk Ergo e Dark Perk Sym: due modelli gemelli per specifiche, con polling rate di 8.000 Hz anche in wireless, sensore PixArt PAW3950 da 32.000 DPI e autonomia dichiarata fino a 110 ore. Nel test, a 8.000 Hz si arriva a circa 30 ore reali, con ricarica completa in un'ora e mezza
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker
Analizziamo nel dettaglio DJI RS 5, l'ultimo arrivato della famiglia Ronin progettato per videomaker solisti e piccoli studi. Tra tracciamento intelligente migliorato e ricarica ultra rapida, scopriamo come questo gimbal eleva la qualità delle produzioni.
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming
AMD Ryzen 7 9850X3D è la nuova CPU gaming di riferimento grazie alla 3D V-Cache di seconda generazione e frequenze fino a 5,6 GHz. Nei test offre prestazioni superiori a 9800X3D e 7800X3D, confermando la leadership AMD nel gaming su PC.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 05-10-2009, 21: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, 10: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, 11: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 11:25.
superbau è offline   Rispondi citando il messaggio o parte di esso
Old 06-10-2009, 14: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, 23: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 23:33.
superbau è offline   Rispondi citando il messaggio o parte di esso
Old 12-10-2009, 14: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, 16: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, 19: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, 20: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


Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto Dark Perk Ergo e Sym provati tra wireless, softw...
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker DJI RS 5: stabilizzazione e tracking intelligent...
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequen...
Le soluzioni FSP per il 2026: potenza e IA al centro Le soluzioni FSP per il 2026: potenza e IA al ce...
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa AWS annuncia European Sovereign Cloud, il cloud ...
Segway Navimow presenta la nuova gamma d...
Xiaomi SU7 Pro: l'ispezione dopo 265.000...
Nimbus Innovation Awards 2026: le miglio...
SSD Samsung contraffatto, ma Windows e C...
Enrique Lores, CEO e presidente di HP, l...
SoftBank e Intel preparano la 'memoria d...
Il blocco dei porno per i minori è...
AMD: i nuovi processori Zen 6 saranno (i...
Ancora aumenti per le schede video Radeo...
Sonos presenta Amp Multi a ISE 2026: il ...
Una funzione esclusiva dei Pixel potrebb...
La Cina vieta ufficialmente le maniglie ...
HP e lavoro ibrido: le nuove cuffie Poly...
MSI sta lavorando a un dissipatore ottim...
27 offerte Amazon, le prime 5 in elenco ...
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: 03:08.


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