Hoi
.
Ik ben momenteel een ScreenSnapr kloon aan het maken in C#. Om hetzelfde effect te bekomen als ScreenSnapr voor het nemen van screenshots heb ik een borderless Form aangemaakt:
Dus een zwart maximized semi-transparant Form met een TransparencyKey (wit). Dit Form wordt dus gebruikt om een volledig transparant (kleur van de TransparencyKey) selection box in te tekenen. Dit doe ik in OnPaint:
Dit werkt perfect. Het probleem is dat wanneer ik in Windows 7 Aero uitzet, de TransparencyKey niet meer lijkt te werken. In plaats van een volledig transparante selection box krijg ik dan een semi-transparant witte selection box.
Heeft de TransparencyKey propertie Aero nodig om te werken ofzo
. Is dit een bug in mijn code of mogelijk een bug in Windows? Voor de mensen die niet bekend zijn met ScreenSnapr, hier kan je zien hoe het werkt en wat ik dus probeer te doen met dit Form.
Alvast bedankt.
Ik ben momenteel een ScreenSnapr kloon aan het maken in C#. Om hetzelfde effect te bekomen als ScreenSnapr voor het nemen van screenshots heb ik een borderless Form aangemaakt:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| public ScreenSelectionForm() { InitializeComponent(); this.BackColor = this.backgroundPen.Color; this.TransparencyKey = this.selectionPen.Color; this.AllowTransparency = true; this.DoubleBuffered = true; this.FormBorderStyle = FormBorderStyle.None; this.Opacity = 0.65D; this.ShowIcon = false; this.ShowInTaskbar = false; this.TopMost = true; this.WindowState = FormWindowState.Maximized; this.SetStyle(ControlStyles.UserPaint, true); this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true); this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); this.UpdateStyles(); } |
Dus een zwart maximized semi-transparant Form met een TransparencyKey (wit). Dit Form wordt dus gebruikt om een volledig transparant (kleur van de TransparencyKey) selection box in te tekenen. Dit doe ik in OnPaint:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| protected override void OnPaint(PaintEventArgs e) { Graphics g = e.Graphics; if (this.isSelectionActive) { g.CompositingMode = CompositingMode.SourceCopy; g.InterpolationMode = InterpolationMode.NearestNeighbor; g.PixelOffsetMode = PixelOffsetMode.HighSpeed; g.CompositingQuality = CompositingQuality.HighSpeed; g.SmoothingMode = SmoothingMode.HighSpeed; g.FillRectangle(this.backgroundPen.Brush, this.rcLastDraw); g.FillRectangle(this.borderPen.Brush, this.rcCurrentDraw); g.FillRectangle(this.selectionPen.Brush, this.rcCurrent); } else { g.Clear(backgroundPen.Color); } } |
Dit werkt perfect. Het probleem is dat wanneer ik in Windows 7 Aero uitzet, de TransparencyKey niet meer lijkt te werken. In plaats van een volledig transparante selection box krijg ik dan een semi-transparant witte selection box.
Heeft de TransparencyKey propertie Aero nodig om te werken ofzo
Alvast bedankt.
Asus P8P67 EVO | i5 2500k (4.8 GHz) | Sapphire HD 7970 Vapor-X GHz Ed. | 8 GB DDR3 1600 | 1 TB HDD