private static void OnBackgroundChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { if (e.NewValue != e.OldValue) { GB_GridHeader header = d as GB_GridHeader; GDI.Brush brush = ConvertWpfBrush2GDI(e.NewValue as Brush, header.m_bufferedBmp.PixelHeight); if (brush != null) { header.m_background.Dispose(); header.m_background = brush; } } }
protected override void OnRender(DrawingContext drawingContext) { base.OnRender(drawingContext); if (mDraggedElement != null) { Win32.POINT screenPos = new Win32.POINT(); if (Win32.GetCursorPos(ref screenPos)) { int iPosition = -1; GB_GridHeader header = mDraggedElement as GB_GridHeader; if (header != null) { Point pt = header.PointFromScreen(new Point(screenPos.X, screenPos.Y)); System.Diagnostics.Debug.WriteLine("pt = " + pt.X); double dX = pt.X; int iColumn = header.GetCellColumn(ref dX); if (iColumn >= 0) { iPosition = header.GetCellPosition(iColumn); } } Point pos = PointFromScreen(new Point(screenPos.X, screenPos.Y)); Rect rect = new Rect(pos.X, pos.Y, contentbmp.PixelWidth, contentbmp.PixelHeight); drawingContext.PushOpacity(0.7); drawingContext.DrawImage(contentbmp, rect); if (iPosition >= 0) { Point pos1 = header.PointToScreen(new Point(iPosition, header.ActualHeight)); pos1 = PointFromScreen(pos1); lgArrow.Transform = new TranslateTransform(pos1.X, pos1.Y); drawingContext.DrawGeometry(header.Foreground, new Pen(header.Foreground, 1), lgArrow); } drawingContext.Pop(); } } }