Clipping coi GraphicsPath - Cercasi Esperto.

venerdì 21 luglio 2006 - 20.09

D0X Profilo | Newbie

Ciao!

Non ci volevo arrivare ad usare i GraphicsPath, ma chi ha letto l'ultimo messaggio da me postato "Controllo SOPRA tutti gli altri...ma trasparente" capisce perchè alla fine sono costretto ad usarli.
Mi servirebbe una dritta da qualcuno che conosce abbastanza bene i GraphicsPath e clipping relativo.

Il problema è questo:

esiste un pannello P e dentro a questo pannello sono disegnati 2 rettangoli A e B con un GraphicsPath come da figura:


242x242 1Kb


Ora, io voglio che esista un Clipping per le aree definite da A e B.....se eseguo una DrawImage l'immagine deve essere contenuta in A o in B. Una prima idea sarebbe questa:

GraphicsPath gp = new GraphicsPath();
gp.AddRectangle(RETTANGOLO_A);
gb.AddRectangle(RETTANGOLO_B);

nella Paint del pannello si ha:

pannello_Paint(object sender, PaintEventArgs e)
{
e.Graphics.SetClip(gp);
e.Graphics.DrawPath(new Pen(Color.Black, 3), gp);
}

Ok, il path viene disegnato e settato il clipping. Ora, se si effettua una drawImage l'immagine viene clippata ma, se è troppo grossa, viene clippata "a cavallo" dei due rettangoli come si vede dalla seguente figura:


242x242 5Kb


Io, invece, vorrei che l'immagine sia clippata SOLO dal rettangolo (A o B) che contiene una porzione dell'immagine, ad esempio se l'immagine viene draggata su A è A che esegue il clip e B NON visualizza nulla.

Dato che non sono esperto di GraphicsPath e Clipping volevo sapere se esiste un modo "semplice" (ho provato i CombineMode ma senza grosso successo...) per fare una cosa del genere o se, al contrario, sono costretto a mettermi dietro ad algortimi menosi che calcolano la posizione corrente del mouse ed abilitano e disabilitano il clip nei vari subpath (quest'ultima frase è poco chiara anche a me :D .... dovrebbe essere possibile ma rischio di impazzire considerando anche il caldo di questi giorni :D).

C'è qualche buon anima che sa smazzare questi problemi in modo "semplice"?!?

Grazie per qualsiasi idea!!!

Ciao!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5