private void OnLoaded(object sender, RoutedEventArgs e) { //make the render effect same as SnapsToDevicePixels //"SnapsToDevicePixels = true;" doesn't work on "OnRender" //however, this maybe make some offset form the render target's origin location //SetValue(RenderOptions.EdgeModeProperty, EdgeMode.Aliased); //ini this Cursor = BitmapCursor.CreateCrossCursor(); Background = Brushes.Transparent; //ini mask rect //maskRectLeft.Fill = new SolidColorBrush(Color.FromArgb(120, System.Drawing.Color.Red.R, System.Drawing.Color.Red.G, System.Drawing.Color.Red.B)); maskRectLeft.Fill = maskRectRight.Fill = maskRectTop.Fill = maskRectBottom.Fill = Config.MaskWindowBackgroundBlack; //these propeties(x, y...) will not changed SetLeft(maskRectLeft, 0); SetTop(maskRectLeft, 0); SetRight(maskRectRight, 0); SetTop(maskRectRight, 0); SetTop(maskRectTop, 0); SetBottom(maskRectBottom, 0); maskRectLeft.Height = ActualHeight; Children.Add(maskRectLeft); Children.Add(maskRectRight); Children.Add(maskRectTop); Children.Add(maskRectBottom); //ini selection border selectionBorder.Stroke = Config.SelectionBorderBrushDefaut; selectionBorder.StrokeThickness = Config.SelectionBorderThickness.Left; Children.Add(selectionBorder); //ini indicator indicator = new IndicatorObject(this); Children.Add(indicator); CompositionTarget.Rendering += OnCompositionTargetRendering; }
protected override void OnVisualParentChanged(DependencyObject oldParent) { base.OnVisualParentChanged(oldParent); Target = this.GetAncestor <IndicatorObject>(); }