[ASP.Net GDI+] transparant tekenen 2 halve cirkels

Pagina: 1
Acties:

  • 6K
  • Registratie: September 2002
  • Laatst online: 19-01-2025

6K

is ook zo...

Topicstarter
Ik heb een user control gemaakt wat pie's voor een piechart kan tekenen.
als ik nu probeer om 2 halve cirkels te tekenen (samen 1 volle dus) lukt dit niet vanwege de transparantie van de achtergrond.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
        protected override void OnPaint(PaintEventArgs e)
        {
            this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);
            this.BackColor = Color.Transparent;
            
            Graphics gr = e.Graphics;

            SolidBrush transBrush = new SolidBrush(Color.Transparent);
             
            Graphics g = this.CreateGraphics();
            
            GraphicsPath path = new GraphicsPath();
            path.AddPie(x, y, width, height, starthoek, hoek);
                                    
            gr.SetClip(new Region(path),CombineMode.Intersect);

            gr.SmoothingMode = SmoothingMode.HighQuality;
            gr.DrawPie(p, x, y, width, height, starthoek, hoek);
            gr.FillPie(br, x, y, width, height, starthoek, hoek);

            base.OnPaint (e);           
        }


deze code roep ik dus 2 keer aan (voor iedere halve cirkel 1 keer).
De starthoek zit bij de 2 pie's 180 graden verschil tussen.
Als ik ze teken met behulp van het Graphics object van het aanroepende form gaat het goed, dan tekent hij ze rechtstreeks op het canvas zeg maar.
Maar ze moeten klikbaar zijn, dus dat mag niet.

iemand?

edit:

deze heb ik al werkend, maar dus niet klikbaar omdat hij op het canvas tekent.
Afbeeldingslocatie: http://www.seesharp.nl/pieter/upload/sample.jpg

[ Voor 7% gewijzigd door 6K op 09-11-2004 08:03 ]

٩(͡๏̯͡๏)۶ ٩(●̮̮̃•̃)۶


  • 6K
  • Registratie: September 2002
  • Laatst online: 19-01-2025

6K

is ook zo...

Topicstarter
niet 1 reactie :S
mocht iemand ooit hetzelfde treffen:

het probleem zit hem in het feit dat .Net blijkbaar niet goed om kan gaan met transparantie :x
wie had dat gedacht :)

de eerste 2 regels van de code hierboven moeten weg en daar moet het volgende voor in de plaats komen:

code:
1
2
3
4
5
6
7
8
9
        protected override CreateParams CreateParams
        {
            get
            {
                CreateParams cp=base.CreateParams;
                cp.ExStyle|=0x00000020; //WS_EX_TRANSPARENT
                return cp;
            }
        }


De rest van de code die niet gepost is werkt nu ook (het afvangen van rechter en linkermuisknop per taartstukje).

٩(͡๏̯͡๏)۶ ٩(●̮̮̃•̃)۶