コード例 #1
0
ファイル: TriangleStroke.cs プロジェクト: sonicrang/RangPaint
        protected override void DrawCore(DrawingContext drawingContext, DrawingAttributes drawingAttributes)
        {
            if (drawingContext == null)
            {
                throw new ArgumentNullException("drawingContext");
            }
            if (null == drawingAttributes)
            {
                throw new ArgumentNullException("drawingAttributes");
            }
            Pen pen = new Pen
            {
                StartLineCap = PenLineCap.Round,
                EndLineCap = PenLineCap.Round,
                Brush = new SolidColorBrush(drawingAttributes.Color),
                Thickness = drawingAttributes.Width
            };

            BrushConverter bc = new BrushConverter();
            Brush BackGround = (Brush)bc.ConvertFromString(drawingAttributes.GetPropertyData(DrawAttributesGuid.BackgroundColor).ToString());
            GeometryConverter gc = new GeometryConverter();
            Geometry geometry = (Geometry)gc.ConvertFromString(string.Format("M {0},{1} {2},{3} {4},{5} Z", StylusPoints[0].X, StylusPoints[1].Y, (Math.Abs(StylusPoints[1].X - StylusPoints[0].X))/2 + StylusPoints[0].X, StylusPoints[0].Y, StylusPoints[1].X, StylusPoints[1].Y));
            GeometryDrawing gd = new GeometryDrawing(BackGround, pen, geometry);
            drawingContext.DrawDrawing(gd);
        }
コード例 #2
0
        protected override void OnRender(System.Windows.Media.DrawingContext drawingContext)
        {
            base.OnRender(drawingContext);
            drawingContext.DrawRectangle(Background, null, new Rect(0, 0, ActualWidth, ActualHeight));

            if (mode == SpectrogramMode.Scroll)
            {
                drawingContext.DrawDrawing(new ImageDrawing(
                                               writeableBitmap, new Rect(ActualWidth - position, 0, ActualWidth * 3, ActualHeight)));
            }
            else
            {
                drawingContext.DrawDrawing(new ImageDrawing(
                                               writeableBitmap, new Rect(0, 0, ActualWidth, ActualHeight)));
            }
        }
コード例 #3
0
		protected override void InnerDraw(DrawingContext drawingContext)
		{
			base.InnerDraw(drawingContext);
			drawingContext.PushTransform(_scaleTransform);
			drawingContext.DrawDrawing(_textDrawing);
			drawingContext.Pop();
		}
コード例 #4
0
        protected override void OnRender(System.Windows.Media.DrawingContext drawingContext)
        {
            RotarySwitch rotarySwitch = Visual as RotarySwitch;

            if (rotarySwitch != null)
            {
                if (rotarySwitch.DrawLines)
                {
                    drawingContext.DrawDrawing(_lines);
                }
                foreach (SwitchPositionLabel label in _labels)
                {
                    drawingContext.DrawText(label.Text, label.Location);
                }

                drawingContext.PushTransform(new RotateTransform(rotarySwitch.KnobRotation, _center.X, _center.Y));
                drawingContext.DrawRectangle(_imageBrush, null, _imageRect);
                if (rotarySwitch.VisualizeDragging)
                {
                    double length = (rotarySwitch.DragPoint - _center).Length;
                    drawingContext.DrawLine(HeadingPen, _center, _center + new Vector(0d, -length));
                }
                drawingContext.Pop();

                if (rotarySwitch.VisualizeDragging)
                {
                    drawingContext.DrawLine(DragPen, _center, rotarySwitch.DragPoint);
                }
            }
        }
コード例 #5
0
        protected override void OnRender(DrawingContext drawingContext)
        {
            base.OnRender(drawingContext);

            var ellipse = new EllipseGeometry(new Point(250, 50), 50, 50);
            var drawing = new GeometryDrawing(Brushes.BlueViolet, new Pen(Brushes.Bisque, 2), ellipse);
            drawingContext.DrawDrawing(drawing);
        }
コード例 #6
0
ファイル: VisualHost.cs プロジェクト: gitter-badger/Test2d
        /// <summary>
        /// 
        /// </summary>
        /// <param name="drawingContext"></param>
        protected override void OnRender(DrawingContext drawingContext)
        {
            base.OnRender(drawingContext);

            foreach (var visual in Visuals)
            {
                drawingContext.DrawDrawing(visual.Drawing);
            }
        }
コード例 #7
0
        protected override void OnRender(SWM.DrawingContext drawingContext)
        {
            base.OnRender(drawingContext);

            DrawYAxis();
            drawingContext.DrawDrawing(_drawingGroup);

            Redraw();
        }
コード例 #8
0
 protected override void OnRender(System.Windows.Media.DrawingContext drawingContext)
 {
     base.OnRender(drawingContext);
     drawingContext.DrawRectangle(Background, null, new Rect(0, 0, ActualWidth, ActualHeight));
     if (writeableBitmap != null)
     {
         drawingContext.DrawDrawing(new ImageDrawing(writeableBitmap,
                                                     new Rect(0, 0, writeableBitmap.PixelWidth, writeableBitmap.PixelHeight)));
     }
 }
コード例 #9
0
ファイル: VIMGraphPanel.cs プロジェクト: mcwatt77/vimcontrols
        protected override void OnRender(DrawingContext dc)
        {
            if (_drawings.Count == 0 || _size.Height != ActualHeight || _size.Width != ActualWidth)
            {
                RenderSizeChanged(_size = new Size(ActualWidth, ActualHeight));
            }
            if (_drawings.Count == 1)
                dc.DrawDrawing(_drawings[0]);

            base.OnRender(dc);
        }
コード例 #10
0
ファイル: TextBlockPainter.cs プロジェクト: xbadcode/Rubezh
		//private const int Margin = 3;
		protected override void InnerDraw(DrawingContext drawingContext)
		{
			base.InnerDraw(drawingContext);
			if (_scaleTransform != null)
				drawingContext.PushTransform(_scaleTransform);
			if (_clipGeometry != null)
				drawingContext.PushClip(_clipGeometry);
			drawingContext.DrawDrawing(_textDrawing);
			if (_clipGeometry != null)
				drawingContext.Pop();
			if (_scaleTransform != null)
				drawingContext.Pop();
		}
コード例 #11
0
        protected override void OnRender(System.Windows.Media.DrawingContext drawingContext)
        {
            RotarySwitch rotarySwitch = Visual as RotarySwitch;

            if (rotarySwitch != null)
            {
                if (rotarySwitch.DrawLines)
                {
                    drawingContext.DrawDrawing(_lines);
                }
                foreach (SwitchPositionLabel label in _labels)
                {
                    drawingContext.DrawText(label.Text, label.Location);
                }
                _imageBrush.RelativeTransform = new RotateTransform(rotarySwitch.KnobRotation, 0.5d, 0.5d);
                drawingContext.DrawRectangle(_imageBrush, null, _imageRect);
            }
        }
コード例 #12
0
        protected override void OnRender(System.Windows.Media.DrawingContext drawingContext)
        {
            base.OnRender(drawingContext);

            if (IsBusy)
            {
                var centerX   = ActualWidth / 2;
                var centerY   = ActualHeight / 2;
                var drawing   = new DrawingGroup();
                var radius    = 30.0;
                var ballSize  = 10.0;
                var transform = new RotateTransform();

                for (double i = 0; i < 8; ++i)
                {
                    var color = (byte)(double)(((1.0 - i / 8.0) * 255.0));
                    drawing.Children.Add(
                        new GeometryDrawing(
                            new SolidColorBrush(Color.FromArgb(255, color, color, color)),
                            null,
                            new EllipseGeometry(
                                new Point(
                                    centerX + radius * Math.Cos((Math.PI * 2 / 8.0) * i),
                                    centerY + radius * Math.Sin((Math.PI * 2 / 8.0) * i)),
                                ballSize, ballSize)));
                }

                transform.CenterX = centerX;
                transform.CenterY = centerY;
                transform.BeginAnimation(RotateTransform.AngleProperty,
                                         new DoubleAnimation(0, 360, new Duration(TimeSpan.FromSeconds(1.5)))
                {
                    RepeatBehavior = RepeatBehavior.Forever,
                });

                drawing.Transform = transform;
                drawingContext.DrawDrawing(drawing);
            }
        }
コード例 #13
0
ファイル: ChartPanel.cs プロジェクト: anndream/StockCharts-1
        protected override void OnRender(DrawingContext drawingContext)
        {
            if (ChartData == null) return;

            if (GraphContents == null)
            {
                // ActualWidth and ActualHeight are NaN at initialization, need to do this here
                Viewport.Visible = new Rect(new Size(ActualWidth, ActualHeight));
                Viewport.OnViewportResized(ActualWidth, ActualHeight);
                GraphContents = new DrawingGroup();
            }

            if (FilteredPoints == null)
                Update();

            using (DrawingContext context = GraphContents.Open())
            {
                // Draw Background
                context.DrawRectangle(ChartStyle.BackgroundColor, null, Viewport.Output);

                // Draw Chart
                ChartDrawing.Draw(context, FilteredPoints, ChartStyle);

                //Draw Debug text
                context.DrawText(new FormattedText("Viewport.Visible=" + Viewport.Visible + "\n" + "Viewport.Output=" + Viewport.Output,
                    CultureInfo.InvariantCulture,
                    FlowDirection.LeftToRight,
                    new Typeface("Arial"), 12, Brushes.Red),
                    new Point(10, 10));
            }

            drawingContext.DrawDrawing(GraphContents);
        }
コード例 #14
0
        protected override void OnRender(DrawingContext drawingContext)
        {
            base.OnRender(drawingContext);

            var bc = new BrushConverter();

            var user = XIVInfoViewModel.Instance.CurrentUser;
            if (user == null)
            {
                return;
            }

            var origin = new Coordinate
            {
                X = (float) (ActualWidth / 2),
                Y = (float) (ActualHeight / 2)
            };

            var scale = ((float) (ActualHeight / 2.0f) / 125.0f);
            var angle = Math.Abs(user.Heading * (180 / Math.PI) - 180);

            if (Settings.Default.RadarCompassMode)
            {
                var drawingGroup = new DrawingGroup
                {
                    Transform = new RotateTransform
                    {
                        Angle = angle,
                        CenterX = origin.X,
                        CenterY = origin.Y
                    }
                };
                drawingGroup.Children.Add(new ImageDrawing(RadarIconHelper.RadarHeading, new Rect(origin.X - 64, origin.Y - 128, 128, 128)));
                drawingContext.DrawDrawing(drawingGroup);
            }
            else
            {
                drawingContext.DrawImage(RadarIconHelper.RadarHeading, new Rect(new Point(origin.X - 64, origin.Y - 128), new Size(128, 128)));
            }

            var sb = new StringBuilder();

            var npcEntites = new List<ActorEntity>(XIVInfoViewModel.Instance.CurrentNPCs.Select(kvp => kvp.Value)
                                                                   .ToList());
            var monsterEntites = new List<ActorEntity>(XIVInfoViewModel.Instance.CurrentMonsters.Select(kvp => kvp.Value)
                                                                       .ToList());
            var pcEntites = new List<ActorEntity>(XIVInfoViewModel.Instance.CurrentPCs.Select(kvp => kvp.Value)
                                                                  .ToList());

            if (Settings.Default.FilterRadarItems)
            {
                var npcFilters = PluginViewModel.Instance.Filters.Where(filter => filter.Type != Actor.Type.PC && filter.Type != Actor.Type.Monster)
                                                .ToList();
                if (npcFilters.Any())
                {
                    npcEntites = RadarFilterHelper.ResolveFilteredEntities(npcFilters, npcEntites);
                }

                var monsterFilters = PluginViewModel.Instance.Filters.Where(filter => filter.Type == Actor.Type.Monster)
                                                    .ToList();
                if (PluginViewModel.Instance.RankedFilters.Any())
                {
                    monsterFilters.AddRange(PluginViewModel.Instance.RankedFilters);
                }

                if (monsterFilters.Any())
                {
                    monsterEntites = RadarFilterHelper.ResolveFilteredEntities(monsterFilters, monsterEntites);
                }

                var pcFilters = PluginViewModel.Instance.Filters.Where(filter => filter.Type == Actor.Type.PC)
                                               .ToList();
                if (pcFilters.Any())
                {
                    pcEntites = RadarFilterHelper.ResolveFilteredEntities(pcFilters, pcEntites);
                }
            }

            #region Resolve PCs

            if (Settings.Default.PCShow)
            {
                foreach (var actorEntity in pcEntites)
                {
                    sb.Clear();
                    var fsModifier = 0;
                    drawingContext.PushOpacity(1);
                    try
                    {
                        if (!actorEntity.IsValid || user == null)
                        {
                            continue;
                        }
                        if (actorEntity.ID == user.ID)
                        {
                            continue;
                        }
                        Coordinate screen;
                        if (Settings.Default.RadarCompassMode)
                        {
                            var coord = user.Coordinate.Subtract(actorEntity.Coordinate)
                                            .Scale(scale);
                            screen = new Coordinate(-coord.X, 0, -coord.Y).Add(origin);
                        }
                        else
                        {
                            screen = user.Coordinate.Subtract(actorEntity.Coordinate)
                                         .Rotate2D(user.Heading)
                                         .Scale(scale)
                                         .Add(origin);
                        }
                        screen = screen.Add(-8, -8, 0);
                        if (Settings.Default.PCShowName)
                        {
                            sb.Append(actorEntity.Name);
                        }
                        if (Settings.Default.PCShowHPPercent)
                        {
                            sb.AppendFormat(" {0:P0}", actorEntity.HPPercent);
                        }
                        if (Settings.Default.PCShowDistance)
                        {
                            sb.AppendFormat(" {0:N2} {1}", user.GetDistanceTo(actorEntity), ResolveHeightVariance(user, actorEntity));
                        }
                        var useJob = Settings.Default.PCShowJob;
                        if (Settings.Default.PCShowJob)
                        {
                            #region Get Job Icons

                            switch (actorEntity.Job)
                            {
                                case Actor.Job.ACN:
                                    drawingContext.DrawImage(RadarIconHelper.Arcanist, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.ALC:
                                    drawingContext.DrawImage(RadarIconHelper.Alchemist, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.ARC:
                                    drawingContext.DrawImage(RadarIconHelper.Archer, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.ARM:
                                    drawingContext.DrawImage(RadarIconHelper.Armorer, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.AST:
                                    drawingContext.DrawImage(RadarIconHelper.Astrologian, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.BLM:
                                    drawingContext.DrawImage(RadarIconHelper.Blackmage, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.BRD:
                                    drawingContext.DrawImage(RadarIconHelper.Bard, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.BSM:
                                    drawingContext.DrawImage(RadarIconHelper.Blacksmith, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.BTN:
                                    drawingContext.DrawImage(RadarIconHelper.Botanist, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.CNJ:
                                    drawingContext.DrawImage(RadarIconHelper.Conjurer, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.CPT:
                                    drawingContext.DrawImage(RadarIconHelper.Carpenter, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.CUL:
                                    drawingContext.DrawImage(RadarIconHelper.Culinarian, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.DRG:
                                    drawingContext.DrawImage(RadarIconHelper.Dragoon, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.DRK:
                                    drawingContext.DrawImage(RadarIconHelper.DarkKnight, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.FSH:
                                    drawingContext.DrawImage(RadarIconHelper.Fisher, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.GLD:
                                    drawingContext.DrawImage(RadarIconHelper.Gladiator, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.GSM:
                                    drawingContext.DrawImage(RadarIconHelper.Goldsmith, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.LNC:
                                    drawingContext.DrawImage(RadarIconHelper.Leatherworker, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.LTW:
                                    drawingContext.DrawImage(RadarIconHelper.Leatherworker, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.MCH:
                                    drawingContext.DrawImage(RadarIconHelper.Machinist, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.MIN:
                                    drawingContext.DrawImage(RadarIconHelper.Miner, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.MNK:
                                    drawingContext.DrawImage(RadarIconHelper.Monk, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.MRD:
                                    drawingContext.DrawImage(RadarIconHelper.Marauder, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.NIN:
                                    drawingContext.DrawImage(RadarIconHelper.Ninja, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.PGL:
                                    drawingContext.DrawImage(RadarIconHelper.Pugilist, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.PLD:
                                    drawingContext.DrawImage(RadarIconHelper.Paladin, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.ROG:
                                    drawingContext.DrawImage(RadarIconHelper.Rogue, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.SCH:
                                    drawingContext.DrawImage(RadarIconHelper.Scholar, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.Unknown:
                                    if (actorEntity.OwnerID > 0 && actorEntity.OwnerID < 3758096384)
                                    {
                                        drawingContext.DrawImage(RadarIconHelper.Chocobo, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    }
                                    useJob = false;
                                    break;
                                case Actor.Job.WAR:
                                    drawingContext.DrawImage(RadarIconHelper.Warrior, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.WHM:
                                    drawingContext.DrawImage(RadarIconHelper.Whitemage, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.WVR:
                                    drawingContext.DrawImage(RadarIconHelper.Weaver, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                            }

                            #endregion
                        }
                        if (!useJob)
                        {
                            var imageSource = actorEntity.HPCurrent > 0 ? RadarIconHelper.Player : RadarIconHelper.Skull;
                            drawingContext.DrawImage(imageSource, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                        }
                        if (Settings.Default.PCShowName || Settings.Default.PCShowHPPercent)
                        {
                            var label = new FormattedText(sb.ToString(), _cultureInfo, _flowDirection, _typeface, Int32.Parse(Settings.Default.PCFontSize) + fsModifier, (SolidColorBrush) bc.ConvertFromString(Settings.Default.PCFontColor));
                            drawingContext.DrawText(label, new Point(screen.X + 20, screen.Y));
                        }
                    }
                    catch (Exception ex)
                    {
                        Logging.Log(Logger, ex.Message);
                    }
                    drawingContext.Pop();
                }
            }

            #endregion

            #region Resolve Monsters

            if (Settings.Default.MonsterShow)
            {
                foreach (var actorEntity in monsterEntites)
                {
                    sb.Clear();
                    var fsModifier = 0;
                    var fontColor = Settings.Default.MonsterFontColor;

                    var RankB = LocaleHelper.GetRankedMonsters("B");
                    var RankA = LocaleHelper.GetRankedMonsters("A");
                    var RankS = LocaleHelper.GetRankedMonsters("S");

                    if (Settings.Default.MonsterShowRankColor)
                    {
                        if (RankA.Any(x => x.Equals(actorEntity.Name, StringComparison.InvariantCultureIgnoreCase)))
                        {
                            fontColor = Settings.Default.MonsterFontColorARank;
                            fsModifier += 2;
                        }
                        else if (RankS.Any(x => x.Equals(actorEntity.Name, StringComparison.InvariantCultureIgnoreCase)))
                        {
                            fontColor = Settings.Default.MonsterFontColorSRank;
                            fsModifier += 2;
                        }
                        else if (RankB.Any(x => x.Equals(actorEntity.Name, StringComparison.InvariantCultureIgnoreCase)))
                        {
                            fontColor = Settings.Default.MonsterFontColorBRank;
                            fsModifier += 2;
                        }
                    }

                    drawingContext.PushOpacity(1);

                    try
                    {
                        if (!actorEntity.IsValid || user == null)
                        {
                            continue;
                        }
                        if (actorEntity.ID == user.ID)
                        {
                            continue;
                        }
                        Coordinate screen;
                        if (Settings.Default.RadarCompassMode)
                        {
                            var coord = user.Coordinate.Subtract(actorEntity.Coordinate)
                                            .Scale(scale);
                            screen = new Coordinate(-coord.X, 0, -coord.Y).Add(origin);
                        }
                        else
                        {
                            screen = user.Coordinate.Subtract(actorEntity.Coordinate)
                                         .Rotate2D(user.Heading)
                                         .Scale(scale)
                                         .Add(origin);
                        }
                        screen = screen.Add(-8, -8, 0);
                        ImageSource actorIcon = null;
                        switch (actorEntity.IsFate)
                        {
                            case true:
                                actorIcon = RadarIconHelper.Fate;
                                break;
                            case false:
                                if (actorEntity.OwnerID > 0 && actorEntity.OwnerID < 3758096384)
                                {
                                    actorIcon = RadarIconHelper.ChocoboPersonal;
                                }
                                else
                                {
                                    actorIcon = actorEntity.IsClaimed ? RadarIconHelper.MonsterClaimed : RadarIconHelper.Monster;
                                }
                                break;
                        }
                        if (actorEntity.HPCurrent > 0)
                        {
                            if (actorIcon != null)
                            {
                                drawingContext.DrawImage(actorIcon, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                            }
                        }
                        else
                        {
                            drawingContext.DrawImage(RadarIconHelper.Skull, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                        }
                        if (Settings.Default.MonsterShowName)
                        {
                            sb.Append(actorEntity.Name);
                        }
                        if (Settings.Default.MonsterShowHPPercent)
                        {
                            sb.AppendFormat(" {0:P0}", actorEntity.HPPercent);
                        }
                        if (Settings.Default.MonsterShowDistance)
                        {
                            sb.AppendFormat(" {0:N2} {1}", user.GetDistanceTo(actorEntity), ResolveHeightVariance(user, actorEntity));
                        }
                        if (Settings.Default.MonsterShowName || Settings.Default.MonsterShowHPPercent)
                        {
                            var label = new FormattedText(sb.ToString(), _cultureInfo, _flowDirection, _typeface, Int32.Parse(Settings.Default.MonsterFontSize) + fsModifier, (SolidColorBrush) bc.ConvertFromString(fontColor));
                            drawingContext.DrawText(label, new Point(screen.X + 20, screen.Y));
                        }
                    }
                    catch (Exception ex)
                    {
                        Logging.Log(Logger, ex.Message);
                    }
                    drawingContext.Pop();
                }
            }

            #endregion

            #region Resolve NPCs, Gathering & Other

            foreach (var actorEntity in npcEntites)
            {
                switch (actorEntity.Type)
                {
                    case Actor.Type.NPC:

                        #region Resolve NPCs

                        if (Settings.Default.NPCShow)
                        {
                            sb.Clear();
                            var fsModifier = 0;
                            drawingContext.PushOpacity(1);
                            try
                            {
                                if (!actorEntity.IsValid || user == null)
                                {
                                    continue;
                                }
                                if (actorEntity.ID == user.ID)
                                {
                                    continue;
                                }
                                Coordinate screen;
                                if (Settings.Default.RadarCompassMode)
                                {
                                    var coord = user.Coordinate.Subtract(actorEntity.Coordinate)
                                                    .Scale(scale);
                                    screen = new Coordinate(-coord.X, 0, -coord.Y).Add(origin);
                                }
                                else
                                {
                                    screen = user.Coordinate.Subtract(actorEntity.Coordinate)
                                                 .Rotate2D(user.Heading)
                                                 .Scale(scale)
                                                 .Add(origin);
                                }
                                screen = screen.Add(-8, -8, 0);
                                if (Settings.Default.NPCShowName)
                                {
                                    sb.Append(actorEntity.Name);
                                }
                                if (Settings.Default.NPCShowHPPercent)
                                {
                                    sb.AppendFormat(" {0:P0}", actorEntity.HPPercent);
                                }
                                if (Settings.Default.NPCShowDistance)
                                {
                                    sb.AppendFormat(" {0:N2} {1}", user.GetDistanceTo(actorEntity), ResolveHeightVariance(user, actorEntity));
                                }
                                var actorIcon = RadarIconHelper.NPC;
                                if (actorEntity.HPCurrent > 0)
                                {
                                    drawingContext.DrawImage(actorIcon, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                }
                                else
                                {
                                    drawingContext.DrawImage(RadarIconHelper.Skull, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                }
                                if (Settings.Default.NPCShowName || Settings.Default.NPCShowHPPercent)
                                {
                                    var label = new FormattedText(sb.ToString(), _cultureInfo, _flowDirection, _typeface, Int32.Parse(Settings.Default.NPCFontSize) + fsModifier, (SolidColorBrush) bc.ConvertFromString(Settings.Default.NPCFontColor));
                                    drawingContext.DrawText(label, new Point(screen.X + 20, screen.Y));
                                }
                            }
                            catch (Exception ex)
                            {
                                Logging.Log(Logger, ex.Message);
                            }
                            drawingContext.Pop();
                        }

                        #endregion

                        break;
                    case Actor.Type.Gathering:

                        #region Resolve Gathering

                        if (Settings.Default.GatheringShow)
                        {
                            sb.Clear();
                            var fsModifier = 0;
                            drawingContext.PushOpacity(1);
                            try
                            {
                                if (!actorEntity.IsValid || user == null)
                                {
                                    continue;
                                }
                                if (actorEntity.ID == user.ID)
                                {
                                    continue;
                                }
                                Coordinate screen;
                                if (Settings.Default.RadarCompassMode)
                                {
                                    var coord = user.Coordinate.Subtract(actorEntity.Coordinate)
                                                    .Scale(scale);
                                    screen = new Coordinate(-coord.X, 0, -coord.Y).Add(origin);
                                }
                                else
                                {
                                    screen = user.Coordinate.Subtract(actorEntity.Coordinate)
                                                 .Rotate2D(user.Heading)
                                                 .Scale(scale)
                                                 .Add(origin);
                                }
                                screen = screen.Add(-8, -8, 0);
                                if (Settings.Default.GatheringShowName)
                                {
                                    sb.Append(actorEntity.Name);
                                }
                                if (Settings.Default.GatheringShowHPPercent)
                                {
                                    sb.AppendFormat(" {0:P0}", actorEntity.HPPercent);
                                }
                                if (Settings.Default.GatheringShowDistance)
                                {
                                    sb.AppendFormat(" {0:N2} {1}", user.GetDistanceTo(actorEntity), ResolveHeightVariance(user, actorEntity));
                                }
                                var actorIcon = RadarIconHelper.Wood;
                                if (actorEntity.HPCurrent > 0)
                                {
                                    drawingContext.DrawImage(actorIcon, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                }
                                else
                                {
                                    drawingContext.DrawImage(RadarIconHelper.Skull, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                }
                                if (Settings.Default.GatheringShowName || Settings.Default.GatheringShowHPPercent)
                                {
                                    var label = new FormattedText(sb.ToString(), _cultureInfo, _flowDirection, _typeface, Int32.Parse(Settings.Default.GatheringFontSize) + fsModifier, (SolidColorBrush) bc.ConvertFromString(Settings.Default.GatheringFontColor));
                                    drawingContext.DrawText(label, new Point(screen.X + 20, screen.Y));
                                }
                            }
                            catch (Exception ex)
                            {
                                Logging.Log(Logger, ex.Message);
                            }
                            drawingContext.Pop();
                        }

                        #endregion

                        break;
                    default:

                        #region Resolve Other

                        if (Settings.Default.OtherShow)
                        {
                            sb.Clear();
                            var fsModifier = 0;
                            drawingContext.PushOpacity(1);
                            try
                            {
                                if (!actorEntity.IsValid || user == null)
                                {
                                    continue;
                                }
                                if (actorEntity.ID == user.ID)
                                {
                                    continue;
                                }
                                Coordinate screen;
                                if (Settings.Default.RadarCompassMode)
                                {
                                    var coord = user.Coordinate.Subtract(actorEntity.Coordinate)
                                                    .Scale(scale);
                                    screen = new Coordinate(-coord.X, 0, -coord.Y).Add(origin);
                                }
                                else
                                {
                                    screen = user.Coordinate.Subtract(actorEntity.Coordinate)
                                                 .Rotate2D(user.Heading)
                                                 .Scale(scale);
                                }
                                screen = screen.Add(-8, -8, 0);
                                ImageSource actorIcon;
                                switch (actorEntity.Type)
                                {
                                    case Actor.Type.Aetheryte:
                                        actorIcon = RadarIconHelper.Crystal;
                                        break;
                                    case Actor.Type.Minion:
                                        actorIcon = RadarIconHelper.Sheep;
                                        break;
                                    default:
                                        actorIcon = RadarIconHelper.NPC;
                                        break;
                                }
                                if (actorEntity.HPCurrent > 0 || actorEntity.Type == Actor.Type.Aetheryte)
                                {
                                    if (actorIcon != null)
                                    {
                                        drawingContext.DrawImage(actorIcon, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    }
                                }
                                else
                                {
                                    drawingContext.DrawImage(RadarIconHelper.Skull, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                }
                                if (Settings.Default.OtherShowName)
                                {
                                    sb.Append(actorEntity.Name);
                                }
                                if (Settings.Default.OtherShowHPPercent)
                                {
                                    sb.AppendFormat(" {0:P0}", actorEntity.HPPercent);
                                }
                                if (Settings.Default.OtherShowDistance)
                                {
                                    sb.AppendFormat(" {0:N2} {1}", user.GetDistanceTo(actorEntity), ResolveHeightVariance(user, actorEntity));
                                }
                                if (Settings.Default.OtherShowName || Settings.Default.OtherShowHPPercent)
                                {
                                    var label = new FormattedText(sb.ToString(), _cultureInfo, _flowDirection, _typeface, Int32.Parse(Settings.Default.OtherFontSize) + fsModifier, (SolidColorBrush) bc.ConvertFromString(Settings.Default.OtherFontColor));
                                    drawingContext.DrawText(label, new Point(screen.X + 20, screen.Y));
                                }
                            }
                            catch (Exception ex)
                            {
                                Logging.Log(Logger, ex.Message);
                            }
                            drawingContext.Pop();
                        }

                        #endregion

                        break;
                }
            }

            #endregion
        }
コード例 #15
0
 protected void RenderFalseHorizon(DrawingContext context)
 {
     if (falseHorizonPen == null)
     {
         return;
     }
     context.DrawDrawing(falseHorizonCrosshairs);
     context.DrawDrawing(pitchGauge);
 }
コード例 #16
0
ファイル: MapControl3.cs プロジェクト: tomba/dwarrowdelf
 protected override void OnRender(DrawingContext drawingContext)
 {
     drawingContext.DrawDrawing(m_drawing);
     //base.OnRender(drawingContext);
 }
コード例 #17
0
        /// <summary>
        /// Renders the contents of an <see cref="T:System.Windows.Controls.Image"/> and 
        /// the SelectorDrawing.
        /// </summary>
        /// <param name="dc">An instance of <see cref="T:System.Windows.Media.DrawingContext"/> 
        /// used to render the control.</param>
        protected override void OnRender(DrawingContext dc)
        {
            base.OnRender(dc);

            if (ActualWidth == 0 || ActualHeight == 0)
                return;

            // Render the SelectorDrawing
            dc.PushTransform(new TranslateTransform(Position.X, Position.Y));
            dc.DrawDrawing(Selector);
            dc.Pop();
        }
コード例 #18
0
ファイル: FGridView.cs プロジェクト: mrange/fgrid
 public void Render(DrawingContext drawingContext)
 {
     if (BackGround != null)
     {
         drawingContext.DrawDrawing(BackGround);
     }
     if (Overlay != null)
     {
         drawingContext.DrawDrawing(Overlay);
     }
 }
コード例 #19
0
ファイル: RadarCanvas.cs プロジェクト: mythsya/db-plugins
        //private void DrawNavNode(DrawingContext dc, CanvasData canvas, GridNode node)
        //{
        //    SolidColorBrush nodeBrush;
        //    if (node.Flags.HasFlag(NavCellFlags.RoundedCorner0) || node.Flags.HasFlag(NavCellFlags.RoundedCorner1) || node.Flags.HasFlag(NavCellFlags.RoundedCorner2) || node.Flags.HasFlag(NavCellFlags.RoundedCorner3))
        //    {
        //        nodeBrush = Brushes.SaddleBrown;
        //    }
        //    else if (node.Flags.HasFlag(NavCellFlags.AllowWalk))
        //    {
        //        nodeBrush = Brushes.Green;
        //    }
        //    else if (node.Flags.HasFlag(NavCellFlags.AllowProjectile))
        //    {
        //        nodeBrush = Brushes.DarkGray;
        //    }
        //    else
        //    {
        //        nodeBrush = Brushes.Black;
        //    }

        //    dc.DrawEllipse(nodeBrush, RadarResources.GridPen, node.NavigableCenter.ToCanvasPoint(), GridSize, GridSize);
        //}

        //private void DrawNodesInRadius(DrawingContext dc, CanvasData canvas)
        //{
        //    try
        //    {
        //        var nearestNode = MainGrid.Instance.GetNearestNodeToPosition(AdvDia.MyPosition);
        //        if (nearestNode == null) return;
        //        var nodes = MainGrid.Instance.GetNeighbors(nearestNode, 5);
        //        foreach (var node in nodes)
        //        {
        //            DrawNavNode(dc, canvas, node);
        //        }

        //    }
        //    catch (Exception ex)
        //    {
        //        Logger.Debug("Exception in RadarUI.DrawNodesInRadius(). {0} {1} {2}", ex.Message, ex.InnerException, ex);
        //    }
        //}

        /// <summary>
        /// Draw a Scene
        /// </summary>
        private void DrawScenes(DrawingContext dc, CanvasData canvas)
        {
            try
            {
                if (Math.Abs(CenterActor.Point.X) < 0.01f && Math.Abs(CenterActor.Point.Y) < 0.01f)
                    return;

                var worldId = AdvDia.CurrentWorldDynamicId;
                foreach (var adventurerScene in ScenesStorage.CurrentWorldScenes.Where(s => s.DynamicWorldId == worldId).ToList())
                {
                    //var scene = adventurerScene.TrinityScene;

                    // Combine navcells into one drawing and store it; because they don't change relative to each other
                    // And because translating geometry for every navcell on every frame is waaaaay too slow.
                    if (Drawings.Relative.ContainsKey(adventurerScene.HashName)) continue;

                    var drawing = new DrawingGroup();

                    using (var groupdc = drawing.Open())
                    {
                        #region Terrain
                        if (adventurerScene.Cells != null)
                        {
                            var figures = new List<PathFigure>();
                            foreach (var navCell in adventurerScene.Cells.Where(nc => nc.IsWalkable))
                            {
                                var topLeft = new Vector3(navCell.MinX, navCell.MinY, 0);
                                var topRight = new Vector3(navCell.MaxX, navCell.MinY, 0);
                                var bottomLeft = new Vector3(navCell.MinX, navCell.MaxY, 0);
                                var bottomRight = new Vector3(navCell.MaxX, navCell.MaxY, 0);
                                var segments = new[]
                                               {
                                                   new LineSegment(topLeft.ToCanvasPoint(), true),
                                                   new LineSegment(topRight.ToCanvasPoint(), true),
                                                   new LineSegment(bottomRight.ToCanvasPoint(), true)
                                               };

                                figures.Add(new PathFigure(bottomLeft.ToCanvasPoint(), segments, true));
                            }
                            var geo = new PathGeometry(figures, FillRule.Nonzero, null);
                            geo.GetOutlinedPathGeometry();
                            groupdc.DrawGeometry(RadarResources.WalkableTerrain, null, geo);
                        }
                        #endregion

                        #region Scene Borders
                        var sceneTopLeft = new Vector3(adventurerScene.Min.X, adventurerScene.Min.Y, 0);
                        var sceneTopRight = new Vector3(adventurerScene.Max.X, adventurerScene.Min.Y, 0);
                        var sceneBottomLeft = new Vector3(adventurerScene.Min.X, adventurerScene.Max.Y, 0);
                        var sceneBottomRight = new Vector3(adventurerScene.Max.X, adventurerScene.Max.Y, 0);

                        groupdc.DrawGeometry(null, RadarResources.WalkableTerrainBorder, new LineGeometry(sceneTopLeft.ToCanvasPoint(), sceneTopRight.ToCanvasPoint()));
                        groupdc.DrawGeometry(null, RadarResources.WalkableTerrainBorder, new LineGeometry(sceneBottomLeft.ToCanvasPoint(), sceneBottomRight.ToCanvasPoint()));
                        groupdc.DrawGeometry(null, RadarResources.WalkableTerrainBorder, new LineGeometry(sceneTopLeft.ToCanvasPoint(), sceneBottomLeft.ToCanvasPoint()));
                        groupdc.DrawGeometry(null, RadarResources.WalkableTerrainBorder, new LineGeometry(sceneTopRight.ToCanvasPoint(), sceneBottomRight.ToCanvasPoint()));
                        #endregion

                        #region Scene Title
                        var textPoint = adventurerScene.Center.ToVector3().ToCanvasPoint();
                        var glyphRun = DrawingUtilities.CreateGlyphRun(adventurerScene.Name, 10, textPoint);
                        groupdc.DrawGlyphRun(Brushes.Wheat, glyphRun);
                        textPoint = adventurerScene.Center.ToVector3().ToCanvasPoint();
                        textPoint.Y = textPoint.Y + 20;
                        glyphRun = DrawingUtilities.CreateGlyphRun((adventurerScene.Max - adventurerScene.Min) + " " + (adventurerScene.HasChild ? "HasSubScene" : string.Empty) + " " + (adventurerScene.SubScene != null ? " (Loaded)" : string.Empty), 8, textPoint);
                        groupdc.DrawGlyphRun(Brushes.Wheat, glyphRun);
                        #endregion

                        #region Nodes
                        var sceneNodePen = new Pen { Brush = Brushes.Black, Thickness = 0.1f };
                        foreach (var node in adventurerScene.Nodes)
                        {
                            if (node.HasEnoughNavigableCells)
                            {
                                groupdc.DrawGeometry(null, sceneNodePen,
                                    new LineGeometry(node.TopLeft.ToVector3().ToCanvasPoint(),
                                        node.TopRight.ToVector3().ToCanvasPoint()));
                                groupdc.DrawGeometry(null, sceneNodePen,
                                    new LineGeometry(node.TopLeft.ToVector3().ToCanvasPoint(),
                                        node.BottomLeft.ToVector3().ToCanvasPoint()));
                                groupdc.DrawGeometry(null, sceneNodePen,
                                    new LineGeometry(node.BottomLeft.ToVector3().ToCanvasPoint(),
                                        node.BottomRight.ToVector3().ToCanvasPoint()));
                                groupdc.DrawGeometry(null, sceneNodePen,
                                    new LineGeometry(node.TopRight.ToVector3().ToCanvasPoint(),
                                        node.BottomRight.ToVector3().ToCanvasPoint()));

                                //var textPoint1 = node.Center.ToVector3().ToCanvasPoint();
                                ////                                var glyphRun1 = DrawingUtilities.CreateGlyphRun(string.Format("{2} {0} ({1:P0})", node.NavigableCellCount, node.FillPercentage, node.LevelAreaId), 8, textPoint1);
                                //var glyphRun1 = DrawingUtilities.CreateGlyphRun(node.LevelAreaId.ToString(), 8, textPoint1);
                                //groupdc.DrawGlyphRun(Brushes.Wheat, glyphRun1);
                            }
                            //foreach (var navPoint in node.Nodes.Where(n=>n.NodeFlags.HasFlag(NodeFlags.NearWall)))
                            //{
                            //    DrawNavNode(groupdc, canvas, navPoint);
                            //    //groupdc.DrawEllipse(Brushes.LightSlateGray, sceneNodePen, navPoint.Center.ToVector3().ToCanvasPoint(), (float)GridSize / 2, (float)GridSize / 2);
                            //}
                        }
                        #endregion




                    }

                    // Have to use SceneHash as key because scenes can appear multiple times with the same name
                    Drawings.Relative.TryAdd(adventurerScene.HashName, new RelativeDrawing
                    {
                        Drawing = drawing,
                        Origin = CenterActor.Morph,
                        Center = adventurerScene.Center.ToVector3(),
                        WorldId = adventurerScene.DynamicWorldId,
                        //Image = new DrawingImage(drawing),
                        //ImageRect = drawing.Bounds

                    });
                }

                foreach (var pair in Drawings.Relative)
                {
                    //if (pair.Value.WorldId != AdvDia.CurrentWorldDynamicId)
                    //    continue;

                    if (!pair.Value.Drawing.Bounds.IntersectsWith(CanvasData.ClipRegion.Rect))
                        continue;
                    dc.DrawDrawing(pair.Value.Drawing);

                    //if (!pair.Value.ImageRect.IntersectsWith(CanvasData.ClipRegion.Rect))
                    //    continue;
                    //dc.DrawImage(pair.Value.Image, pair.Value.ImageRect);
                }

            }
            catch (Exception ex)
            {
                Logger.Debug("Exception in RadarUI.DrawScenes(). {0} {1} {2}", ex.Message, ex.InnerException, ex);
            }
        }
コード例 #20
0
        private void DrawGrid(DrawingContext dc, CanvasData canvas, int gridLineFrequency)
        {
            StaticDrawing sd;

            if (!Drawings.Static.TryGetValue("Grid", out sd))
            {
                var drawing = new DrawingGroup();

                using (var groupdc = drawing.Open())
                {
                    // vertical lines
                    int pos = 0;
                    do
                    {
                        groupdc.DrawLine(RadarBrushes.GridPen, new Point(pos, 0), new Point(pos, (int) canvas.CanvasSize.Height));
                        pos += (int) canvas.GridSquareSize.Height*gridLineFrequency;

                    } while (pos < canvas.CanvasSize.Width);

                    // horizontal lines
                    pos = 0;
                    do
                    {
                        groupdc.DrawLine(RadarBrushes.GridPen, new Point(0, pos), new Point((int) canvas.CanvasSize.Width, pos));
                        pos += (int) canvas.GridSquareSize.Width*gridLineFrequency;

                    } while (pos < canvas.CanvasSize.Height);
                }

                drawing.Freeze();

                Drawings.Static.TryAdd("Grid", new StaticDrawing
                {
                    Drawing = drawing,
                    WorldId = CacheManager.WorldDynamicId
                });
            }
            else
            {
                dc.DrawDrawing(sd.Drawing);
            }
        }
コード例 #21
0
        /// <summary>
        /// Mind = Blown
        /// </summary>
        private void DrawScenes(DrawingContext dc, CanvasData canvas)
        {
            try
            {
                if (CenterActor.Point.X == 0 && CenterActor.Point.Y == 0)
                    return;

                foreach (var pair in CacheManager.CachedScenes)
                {                    
                    var scene = pair.Value;

                    // Combine navcells into one drawing and store it; because they don't change relative to each other
                    // And because translating geometry for every navcell on every frame is waaaaay too slow.
                    if (!Drawings.Relative.ContainsKey(scene.SceneHash) && scene.WalkableNavCellBounds.Any() && scene.IsCurrentWorld)
                    {
                        var drawing = new DrawingGroup();

                        using (var groupdc = drawing.Open())
                        {
                            var figures = new List<PathFigure>();
                            
                            foreach (var navCellBounds in scene.WalkableNavCellBounds)
                            {
                                var cellSouthWest = new Vector3(navCellBounds.Max.X, navCellBounds.Min.Y, 0).ToCanvasPoint();
                                var cellSouthEast = new Vector3(navCellBounds.Max.X, navCellBounds.Max.Y, 0).ToCanvasPoint();
                                var cellNorthWest = new Vector3(navCellBounds.Min.X, navCellBounds.Min.Y, 0).ToCanvasPoint();
                                var cellNorthEast = new Vector3(navCellBounds.Min.X, navCellBounds.Max.Y, 0).ToCanvasPoint();

                                var segments = new[]
                                {
                                    new LineSegment(cellNorthWest, true),
                                    new LineSegment(cellNorthEast, true),
                                    new LineSegment(cellSouthEast, true)
                                };

                                figures.Add(new PathFigure(cellSouthWest, segments, true));
                            }            
                            
                            var geo = new PathGeometry(figures, FillRule.Nonzero, null);
                            geo.GetOutlinedPathGeometry();                            
                            groupdc.DrawGeometry(RadarBrushes.WalkableTerrain, null, geo);                            
                        }
   
                        // Have to use SceneHash as key because scenes can appear multiple times with the same name
                        Drawings.Relative.TryAdd(scene.SceneHash, new RelativeDrawing
                        {
                            Drawing = drawing,
                            Origin = CenterActor.Morph,
                            Center = scene.Center,
                            WorldId = scene.WorldDynamicId
                        });
                    }                  
                }

                foreach (var pair in Drawings.Relative)
                {
                    if (pair.Value.WorldId != CacheManager.WorldDynamicId)
                        continue;

                    if(!pair.Value.Drawing.Bounds.IntersectsWith(CanvasData.ClipRegion.Rect))
                        continue;

                    dc.DrawDrawing(pair.Value.Drawing);
                }

            }
            catch (Exception ex)
            {
                Logger.Log("Exception in RadarUI.DrawScenes(). {0} {1}", ex.Message, ex.InnerException);
            }            
        }
コード例 #22
0
ファイル: ResizeFilter.cs プロジェクト: dbre2/dynamic-image
        /// <summary>
        /// Applies the <see cref="ResizeFilter" /> to the specified <paramref name="source"/>.
        /// </summary>
        /// <param name="source">The source image.</param>
        /// <param name="destination">The destination image.</param>
        /// <param name="g">A <see cref="System.Drawing.Graphics" /> object, created from <paramref name="destination"/>.</param>
        protected override void ApplyFilter(FastBitmap source, DrawingContext dc, int destinationWidth, int destinationHeight)
        {
            ImageSource imageSource = source.InnerBitmap;
            if (_xOffset != 0 || _yOffset != 0)
                imageSource = new CroppedBitmap(source.InnerBitmap, new Int32Rect(_xOffset, _yOffset, _sourceWidth, _sourceHeight));

            DrawingGroup dg = new DrawingGroup();
            RenderOptions.SetBitmapScalingMode(dg, BitmapScalingMode);
            dg.Children.Add(new ImageDrawing(imageSource, new Rect(0, 0, destinationWidth, destinationHeight)));

            dc.DrawDrawing(dg);
        }
コード例 #23
0
        protected override void OnRender(DrawingContext drawingContext)
        {
            base.OnRender(drawingContext);

            var user = XIVInfoViewModel.Instance.CurrentUser;

            var origin = new Coordinate
            {
                X = (float) (ActualWidth / 2),
                Y = (float) (ActualHeight / 2)
            };

            var scale = ((float) (ActualHeight / 2.0f) / 125.0f);
            var angle = Math.Abs(user.Heading * (180 / Math.PI) - 180);

            if (Settings.Default.RadarCompassMode)
            {
                var drawingGroup = new DrawingGroup
                {
                    Transform = new RotateTransform
                    {
                        Angle = angle,
                        CenterX = origin.X,
                        CenterY = origin.Y
                    }
                };
                drawingGroup.Children.Add(new ImageDrawing(RadarIconHelper.RadarHeading, new Rect(origin.X - 64, origin.Y - 128, 128, 128)));
                drawingContext.DrawDrawing(drawingGroup);
            }
            else
            {
                drawingContext.DrawImage(RadarIconHelper.RadarHeading, new Rect(new Point(origin.X - 64, origin.Y - 128), new Size(128, 128)));
            }

            var sb = new StringBuilder();

            var npcEntites = new List<ActorEntity>(XIVInfoViewModel.Instance.CurrentNPCs.ToList());
            var monsterEntites = new List<ActorEntity>(XIVInfoViewModel.Instance.CurrentMonsters.ToList());
            var pcEntites = new List<ActorEntity>(XIVInfoViewModel.Instance.CurrentPCs.ToList());

            #region Resolve PCs

            if (Settings.Default.PCShow)
            {
                foreach (var actorEntity in pcEntites)
                {
                    sb.Clear();
                    var opacityLevel = (actorEntity.Coordinate.Z / XIVInfoViewModel.Instance.CurrentUser.Coordinate.Z);
                    var fsModifier = ResolveFontSize(opacityLevel);
                    opacityLevel = opacityLevel < 0.5 ? 0.5 : opacityLevel > 1 ? 1 : opacityLevel;
                    drawingContext.PushOpacity(opacityLevel);
                    try
                    {
                        if (!actorEntity.IsValid || user == null)
                        {
                            continue;
                        }
                        if (actorEntity.ID == user.ID)
                        {
                            continue;
                        }
                        Coordinate screen;
                        if (Settings.Default.RadarCompassMode)
                        {
                            var coord = user.Coordinate.Subtract(actorEntity.Coordinate)
                                            .Scale(scale);
                            screen = new Coordinate(-coord.X, 0, -coord.Y).Add(origin);
                        }
                        else
                        {
                            screen = user.Coordinate.Subtract(actorEntity.Coordinate)
                                         .Rotate2D(user.Heading)
                                         .Scale(scale)
                                         .Add(origin);
                        }
                        screen = screen.Add(-8, -8, 0);
                        if (Settings.Default.PCShowName)
                        {
                            sb.Append(actorEntity.Name);
                        }
                        if (Settings.Default.PCShowHPPercent)
                        {
                            sb.AppendFormat(" {0:P0}", actorEntity.HPPercent);
                        }
                        if (Settings.Default.PCShowDistance)
                        {
                            sb.AppendFormat(" {0:N2}", XIVInfoViewModel.Instance.CurrentUser.GetDistanceTo(actorEntity));
                        }
                        var useJob = Settings.Default.PCShowJob;
                        if (Settings.Default.PCShowJob)
                        {
                            #region Get Job Icons

                            switch (actorEntity.Job)
                            {
                                case Actor.Job.ACN:
                                    drawingContext.DrawImage(RadarIconHelper.Arcanist, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.ALC:
                                    drawingContext.DrawImage(RadarIconHelper.Alchemist, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.ARC:
                                    drawingContext.DrawImage(RadarIconHelper.Archer, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.ARM:
                                    drawingContext.DrawImage(RadarIconHelper.Armorer, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.BLM:
                                    drawingContext.DrawImage(RadarIconHelper.Blackmage, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.BRD:
                                    drawingContext.DrawImage(RadarIconHelper.Bard, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.BSM:
                                    drawingContext.DrawImage(RadarIconHelper.Blacksmith, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.BTN:
                                    drawingContext.DrawImage(RadarIconHelper.Botanist, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.CNJ:
                                    drawingContext.DrawImage(RadarIconHelper.Conjurer, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.CPT:
                                    drawingContext.DrawImage(RadarIconHelper.Carpenter, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.CUL:
                                    drawingContext.DrawImage(RadarIconHelper.Culinarian, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.Chocobo:
                                    drawingContext.DrawImage(RadarIconHelper.Chocobo, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.DRG:
                                    drawingContext.DrawImage(RadarIconHelper.Dragoon, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.FSH:
                                    drawingContext.DrawImage(RadarIconHelper.Fisher, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.GLD:
                                    drawingContext.DrawImage(RadarIconHelper.Gladiator, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.GSM:
                                    drawingContext.DrawImage(RadarIconHelper.Goldsmith, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.LNC:
                                    drawingContext.DrawImage(RadarIconHelper.Leatherworker, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.LTW:
                                    drawingContext.DrawImage(RadarIconHelper.Leatherworker, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.MIN:
                                    drawingContext.DrawImage(RadarIconHelper.Miner, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.MNK:
                                    drawingContext.DrawImage(RadarIconHelper.Monk, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.MRD:
                                    drawingContext.DrawImage(RadarIconHelper.Marauder, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.PGL:
                                    drawingContext.DrawImage(RadarIconHelper.Pugilist, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.PLD:
                                    drawingContext.DrawImage(RadarIconHelper.Paladin, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.Pet:
                                    drawingContext.DrawImage(RadarIconHelper.Sheep, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.SCH:
                                    drawingContext.DrawImage(RadarIconHelper.Scholar, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.Unknown:
                                    useJob = false;
                                    break;
                                case Actor.Job.WAR:
                                    drawingContext.DrawImage(RadarIconHelper.Warrior, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.WHM:
                                    drawingContext.DrawImage(RadarIconHelper.Whitemage, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                                case Actor.Job.WVR:
                                    drawingContext.DrawImage(RadarIconHelper.Weaver, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    break;
                            }

                            #endregion
                        }
                        if (!useJob)
                        {
                            var imageSource = actorEntity.HPCurrent > 0 ? RadarIconHelper.Player : RadarIconHelper.Skull;
                            drawingContext.DrawImage(imageSource, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                        }
                        if (Settings.Default.PCShowName || Settings.Default.PCShowHPPercent)
                        {
                            var label = new FormattedText(sb.ToString(), _cultureInfo, _flowDirection, _typeface, 12 + fsModifier, Brushes.White);
                            drawingContext.DrawText(label, new Point(screen.X + 20, screen.Y));
                        }
                    }
                    catch (Exception ex)
                    {
                        Logging.Log(Logger, ex.Message);
                    }
                    drawingContext.Pop();
                }
            }

            #endregion

            #region Resolve Monsters

            if (Settings.Default.MonsterShow)
            {
                foreach (var actorEntity in monsterEntites)
                {
                    sb.Clear();
                    var opacityLevel = (actorEntity.Coordinate.Z / XIVInfoViewModel.Instance.CurrentUser.Coordinate.Z);
                    var fsModifier = ResolveFontSize(opacityLevel);
                    opacityLevel = opacityLevel < 0.5 ? 0.5 : opacityLevel > 1 ? 1 : opacityLevel;
                    drawingContext.PushOpacity(opacityLevel);
                    try
                    {
                        if (!actorEntity.IsValid || user == null)
                        {
                            continue;
                        }
                        if (actorEntity.ID == user.ID)
                        {
                            continue;
                        }
                        Coordinate screen;
                        if (Settings.Default.RadarCompassMode)
                        {
                            var coord = user.Coordinate.Subtract(actorEntity.Coordinate)
                                            .Scale(scale);
                            screen = new Coordinate(-coord.X, 0, -coord.Y).Add(origin);
                        }
                        else
                        {
                            screen = user.Coordinate.Subtract(actorEntity.Coordinate)
                                         .Rotate2D(user.Heading)
                                         .Scale(scale)
                                         .Add(origin);
                        }
                        screen = screen.Add(-8, -8, 0);
                        ImageSource actorIcon = null;
                        var brush = Brushes.Red;
                        switch (actorEntity.IsFate)
                        {
                            case true:
                                actorIcon = RadarIconHelper.Fate;
                                break;
                            case false:
                                actorIcon = actorEntity.IsClaimed ? RadarIconHelper.MonsterClaimed : RadarIconHelper.Monster;
                                break;
                        }
                        if (actorEntity.HPCurrent > 0)
                        {
                            if (actorIcon != null)
                            {
                                drawingContext.DrawImage(actorIcon, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                            }
                        }
                        else
                        {
                            drawingContext.DrawImage(RadarIconHelper.Skull, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                        }
                        if (Settings.Default.MonsterShowName)
                        {
                            sb.Append(actorEntity.Name);
                        }
                        if (Settings.Default.MonsterShowHPPercent)
                        {
                            sb.AppendFormat(" {0:P0}", actorEntity.HPPercent);
                        }
                        if (Settings.Default.MonsterShowDistance)
                        {
                            sb.AppendFormat(" {0:N2}", XIVInfoViewModel.Instance.CurrentUser.GetDistanceTo(actorEntity));
                        }
                        if (Settings.Default.MonsterShowName || Settings.Default.MonsterShowHPPercent)
                        {
                            var label = new FormattedText(sb.ToString(), _cultureInfo, _flowDirection, _typeface, 12 + fsModifier, brush);
                            drawingContext.DrawText(label, new Point(screen.X + 20, screen.Y));
                        }
                    }
                    catch (Exception ex)
                    {
                        Logging.Log(Logger, ex.Message);
                    }
                    drawingContext.Pop();
                }
            }

            #endregion

            #region Resolve NPCs, Gathering & Other

            foreach (var actorEntity in npcEntites)
            {
                switch (actorEntity.Type)
                {
                    case Actor.Type.NPC:

                        #region Resolve NPCs

                        if (Settings.Default.NPCShow)
                        {
                            sb.Clear();
                            var opacityLevel = (actorEntity.Coordinate.Z / XIVInfoViewModel.Instance.CurrentUser.Coordinate.Z);
                            var fsModifier = ResolveFontSize(opacityLevel);
                            opacityLevel = opacityLevel < 0.5 ? 0.5 : opacityLevel > 1 ? 1 : opacityLevel;
                            drawingContext.PushOpacity(opacityLevel);
                            try
                            {
                                if (!actorEntity.IsValid || user == null)
                                {
                                    continue;
                                }
                                if (actorEntity.ID == user.ID)
                                {
                                    continue;
                                }
                                Coordinate screen;
                                if (Settings.Default.RadarCompassMode)
                                {
                                    var coord = user.Coordinate.Subtract(actorEntity.Coordinate)
                                                    .Scale(scale);
                                    screen = new Coordinate(-coord.X, 0, -coord.Y).Add(origin);
                                }
                                else
                                {
                                    screen = user.Coordinate.Subtract(actorEntity.Coordinate)
                                                 .Rotate2D(user.Heading)
                                                 .Scale(scale)
                                                 .Add(origin);
                                }
                                screen = screen.Add(-8, -8, 0);
                                var brush = Brushes.LimeGreen;
                                if (Settings.Default.NPCShowName)
                                {
                                    sb.Append(actorEntity.Name);
                                }
                                if (Settings.Default.NPCShowHPPercent)
                                {
                                    sb.AppendFormat(" {0:P0}", actorEntity.HPPercent);
                                }
                                if (Settings.Default.NPCShowDistance)
                                {
                                    sb.AppendFormat(" {0:N2}", XIVInfoViewModel.Instance.CurrentUser.GetDistanceTo(actorEntity));
                                }
                                var actorIcon = RadarIconHelper.NPC;
                                if (actorEntity.HPCurrent > 0)
                                {
                                    drawingContext.DrawImage(actorIcon, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                }
                                else
                                {
                                    drawingContext.DrawImage(RadarIconHelper.Skull, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                }
                                if (Settings.Default.NPCShowName || Settings.Default.NPCShowHPPercent)
                                {
                                    var label = new FormattedText(sb.ToString(), _cultureInfo, _flowDirection, _typeface, 12 + fsModifier, brush);
                                    drawingContext.DrawText(label, new Point(screen.X + 20, screen.Y));
                                }
                            }
                            catch (Exception ex)
                            {
                                Logging.Log(Logger, ex.Message);
                            }
                            drawingContext.Pop();
                        }

                        #endregion

                        break;
                    case Actor.Type.Gathering:

                        #region Resolve Gathering

                        if (Settings.Default.GatheringShow)
                        {
                            sb.Clear();
                            var opacityLevel = (actorEntity.Coordinate.Z / XIVInfoViewModel.Instance.CurrentUser.Coordinate.Z);
                            var fsModifier = ResolveFontSize(opacityLevel);
                            opacityLevel = opacityLevel < 0.5 ? 0.5 : opacityLevel > 1 ? 1 : opacityLevel;
                            drawingContext.PushOpacity(opacityLevel);
                            try
                            {
                                if (!actorEntity.IsValid || user == null)
                                {
                                    continue;
                                }
                                if (actorEntity.ID == user.ID)
                                {
                                    continue;
                                }
                                Coordinate screen;
                                if (Settings.Default.RadarCompassMode)
                                {
                                    var coord = user.Coordinate.Subtract(actorEntity.Coordinate)
                                                    .Scale(scale);
                                    screen = new Coordinate(-coord.X, 0, -coord.Y).Add(origin);
                                }
                                else
                                {
                                    screen = user.Coordinate.Subtract(actorEntity.Coordinate)
                                                 .Rotate2D(user.Heading)
                                                 .Scale(scale)
                                                 .Add(origin);
                                }
                                screen = screen.Add(-8, -8, 0);
                                var brush = Brushes.Orange;
                                if (Settings.Default.GatheringShowName)
                                {
                                    sb.Append(actorEntity.Name);
                                }
                                if (Settings.Default.GatheringShowHPPercent)
                                {
                                    sb.AppendFormat(" {0:P0}", actorEntity.HPPercent);
                                }
                                if (Settings.Default.GatheringShowDistance)
                                {
                                    sb.AppendFormat(" {0:N2}", XIVInfoViewModel.Instance.CurrentUser.GetDistanceTo(actorEntity));
                                }
                                var actorIcon = RadarIconHelper.Wood;
                                if (actorEntity.HPCurrent > 0)
                                {
                                    drawingContext.DrawImage(actorIcon, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                }
                                else
                                {
                                    drawingContext.DrawImage(RadarIconHelper.Skull, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                }
                                if (Settings.Default.GatheringShowName || Settings.Default.GatheringShowHPPercent)
                                {
                                    var label = new FormattedText(sb.ToString(), _cultureInfo, _flowDirection, _typeface, 12 + fsModifier, brush);
                                    drawingContext.DrawText(label, new Point(screen.X + 20, screen.Y));
                                }
                            }
                            catch (Exception ex)
                            {
                                Logging.Log(Logger, ex.Message);
                            }
                            drawingContext.Pop();
                        }

                        #endregion

                        break;
                    default:

                        #region Resolve Other

                        if (Settings.Default.OtherShow)
                        {
                            sb.Clear();
                            var opacityLevel = (actorEntity.Coordinate.Z / XIVInfoViewModel.Instance.CurrentUser.Coordinate.Z);
                            var fsModifier = ResolveFontSize(opacityLevel);
                            opacityLevel = opacityLevel < 0.5 ? 0.5 : opacityLevel > 1 ? 1 : opacityLevel;
                            drawingContext.PushOpacity(opacityLevel);
                            try
                            {
                                if (!actorEntity.IsValid || user == null)
                                {
                                    continue;
                                }
                                if (actorEntity.ID == user.ID)
                                {
                                    continue;
                                }
                                Coordinate screen;
                                if (Settings.Default.RadarCompassMode)
                                {
                                    var coord = user.Coordinate.Subtract(actorEntity.Coordinate)
                                                    .Scale(scale);
                                    screen = new Coordinate(-coord.X, 0, -coord.Y).Add(origin);
                                }
                                else
                                {
                                    screen = user.Coordinate.Subtract(actorEntity.Coordinate)
                                                 .Rotate2D(user.Heading)
                                                 .Scale(scale);
                                }
                                screen = screen.Add(-8, -8, 0);
                                ImageSource actorIcon;
                                var brush = Brushes.Yellow;
                                switch (actorEntity.Type)
                                {
                                    case Actor.Type.Aetheryte:
                                        actorIcon = RadarIconHelper.Crystal;
                                        break;
                                    case Actor.Type.Minion:
                                        actorIcon = RadarIconHelper.Sheep;
                                        break;
                                    default:
                                        actorIcon = RadarIconHelper.NPC;
                                        break;
                                }
                                if (actorEntity.HPCurrent > 0 || actorEntity.Type == Actor.Type.Aetheryte)
                                {
                                    if (actorIcon != null)
                                    {
                                        drawingContext.DrawImage(actorIcon, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                    }
                                }
                                else
                                {
                                    drawingContext.DrawImage(RadarIconHelper.Skull, new Rect(new Point(screen.X, screen.Y), new Size(16, 16)));
                                }
                                if (Settings.Default.OtherShowName)
                                {
                                    sb.Append(actorEntity.Name);
                                }
                                if (Settings.Default.OtherShowHPPercent)
                                {
                                    sb.AppendFormat(" {0:P0}", actorEntity.HPPercent);
                                }
                                if (Settings.Default.OtherShowDistance)
                                {
                                    sb.AppendFormat(" {0:N2}", XIVInfoViewModel.Instance.CurrentUser.GetDistanceTo(actorEntity));
                                }
                                if (Settings.Default.OtherShowName || Settings.Default.OtherShowHPPercent)
                                {
                                    var label = new FormattedText(sb.ToString(), _cultureInfo, _flowDirection, _typeface, 12 + fsModifier, brush);
                                    drawingContext.DrawText(label, new Point(screen.X + 20, screen.Y));
                                }
                            }
                            catch (Exception ex)
                            {
                                Logging.Log(Logger, ex.Message);
                            }
                            drawingContext.Pop();
                        }

                        #endregion

                        break;
                }
            }

            #endregion
        }
コード例 #24
0
    //internal Drawing drawing2;

    protected override void OnRender(DrawingContext dc)
    {
      //base.OnRender(dc);

      dc.DrawLine(new Pen(Brushes.Green, 10), new Point(0, 0), new Point(10000, 10000));
      dc.DrawEllipse(Brushes.Red, null, new Point(200, 200), 100, 100);
      dc.DrawDrawing(this.drawing);
    }
コード例 #25
0
 protected override void OnRender(DrawingContext dc)
 {
     if (_video != null) dc.DrawDrawing(_video);
     base.OnRender(dc);
 }
コード例 #26
0
 protected virtual void CreatePageVisual(Rect pageBounds, DrawingVisual source, bool isFooterPage, DrawingContext drawingContext)
 {
     drawingContext.DrawRectangle(null, FramePen, new Rect { X = FrameRect.X, Y = FrameRect.Y, Width = FrameRect.Width, Height = FrameRect.Height });
     var offsetX = PageMargins.Left - pageBounds.X - 1;
     var offsetY = PageMargins.Top - pageBounds.Y;
     drawingContext.PushTransform(new TranslateTransform(offsetX, offsetY + HeaderHeight));
     var pg = new Rect(new Point(pageBounds.X, pageBounds.Y), new Size(pageBounds.Width, pageBounds.Height));
     drawingContext.PushClip(new RectangleGeometry(pg));
     //drawingContext.PushOpacityMask(Brushes.White);
     drawingContext.DrawDrawing(source.Drawing);
 }
コード例 #27
0
 protected void RenderCompass(DrawingContext context)
 {
     if (baselinePen == null)
     {
         return;
     }
     compassClippingRectangle.Transform = invertedYawTransform;
     compass.Transform = yawTransform;
     compass.ClipGeometry = compassClippingRectangle;
     context.DrawDrawing(compass);
 }
コード例 #28
0
		protected sealed override void OnRender(DrawingContext drawingContext)
		{
			if (Viewport == null) return;

			Rect output = Viewport.Output;
			if (output.Width == 0 || output.Height == 0) return;
			if (output.IsEmpty) return;
			if (Visibility != Visibility.Visible) return;

			if (shouldReRender || manualTranslate || renderTarget == RenderTo.Image || beforeFirstUpdate || updateCalled)
			{
				if (graphContents == null)
				{
					graphContents = new DrawingGroup();
				}
				if (beforeFirstUpdate)
				{
					Update();
				}

				using (DrawingContext context = graphContents.Open())
				{
					if (renderTarget == RenderTo.Screen)
					{
						RenderState state = CreateRenderState(Viewport.Visible, RenderTo.Screen);
						OnRenderCore(context, state);
					}
					else
					{
						// for future use
					}
				}
				updateCalled = false;
			}

			// thumbnail is not created, if
			// 1) CreateThumbnail is false
			// 2) this graph has IsLayer property, set to false
			if (ShouldCreateThumbnail)
			{
				RenderThumbnail();
			}

			if (!manualClip)
			{
				drawingContext.PushClip(new RectangleGeometry(output));
			}
			bool translate = !manualTranslate && IsTranslated;
			if (translate)
			{
				drawingContext.PushTransform(new TranslateTransform(offset.X, offset.Y));
			}

			drawingContext.DrawDrawing(graphContents);

			if (translate)
			{
				drawingContext.Pop();
			}
			if (!manualClip)
			{
				drawingContext.Pop();
			}
			shouldReRender = true;
		}
コード例 #29
0
ファイル: BuzyWait.cs プロジェクト: mrange/T4Include
        protected override void OnRender(DrawingContext drawingContext)
        {
            var clock = GetAnimationClock(this);
            var step = (int)Math.Floor (clock * Spokes);
            var halfWidth = ActualWidth/2;
            var halfHeight = ActualHeight/2;
            var scale = Math.Min (halfWidth, halfHeight);

            var matrix = Matrix.Identity;
            matrix.Scale (scale, scale);
            var angle = -(step*360.0)/Spokes;
            matrix.Rotate (angle);
            matrix.Translate (halfWidth, halfHeight);

            drawingContext.PushTransform(new MatrixTransform (matrix));

            drawingContext.DrawDrawing(s_drawing);

            drawingContext.Pop();
        }
コード例 #30
0
ファイル: SVGImage.cs プロジェクト: swcomp/SVGImage
 // Notice TemplateBinding BackGround must be removed from the Border in the default template (or remove Border from the template)
 // Border renders the background AFTER the child render has been called
 // http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/1575d2af-8e86-4085-81b8-a8bf24268e51/?prof=required
 protected override void OnRender(DrawingContext dc)
 {
     //base.OnRender(dc);
     if (this.Background != null)
         dc.DrawRectangle(this.Background, null, new Rect(0,0, this.ActualWidth, this.ActualHeight));
     if (this.m_drawing == null)
         return;
     dc.PushTransform(this.m_offsetTransform);
     dc.PushTransform(this.m_scaleTransform);
     dc.DrawDrawing(this.m_drawing);
     dc.Pop();
     dc.Pop();
 }
コード例 #31
0
 protected override void OnRender(DrawingContext drawingContext)
 {
     drawingContext.DrawDrawing(Drawing);
 }
コード例 #32
0
ファイル: GridRuler.cs プロジェクト: juancampa/Gearset
        protected override void OnRender(DrawingContext dc)
        {
            if (!guidelinesFixed)
            {
                System.Windows.Media.Matrix m = PresentationSource.FromVisual(this).CompositionTarget.TransformToDevice;
                halfDpiX = m.M11 * 0.5;
                halfDpiY = m.M22 * 0.5;
                guidelinesFixed = true;
            }

            // Create a guidelines set
            GuidelineSet guidelines = new GuidelineSet();
            guidelines.GuidelinesX.Add(halfDpiX);
            guidelines.GuidelinesY.Add(halfDpiY);
            dc.PushGuidelineSet(guidelines);

            dc.DrawRectangle(backgroundBrush, null, new Rect(0, 0, ActualWidth, ActualHeight));

            double range;
            double pos = 0;
            double orderOfMag;
            double stepSize = 0.1;

            switch (Orientation)
            {
                case RulerOrientation.Vertical:
                    //// Thin horizontal lines
                    //range = MaxY - MinY;
                    //orderOfMag = Math.Pow(10, Math.Truncate(Math.Log10(range)));
                    //stepSize = 0.1 * orderOfMag;
                    pos = (Math.Truncate(MinY / stepSize) - 0) * stepSize;
                    //DrawGridHorizonalLines(dc, pos, stepSize, gridLinePen);
                    break;
                case RulerOrientation.Horizontal:
                    // Thin vertical lines.
                    //range = MaxX - MinX;
                    //orderOfMag = Math.Pow(10, Math.Truncate(Math.Log10(range)));
                    //stepSize = 0.1 * orderOfMag;
                    pos = Math.Truncate(MinX / stepSize) * stepSize;
                    //DrawGridVerticalLines(dc, pos, stepSize, gridLinePen);

                    // Draw the seek needle
                    var needlePos = new System.Windows.Point(NeedlePosition, 0);
                    needlePos = CurveCoordsToScreen(ref needlePos);
                    dc.PushTransform(new TranslateTransform(needlePos.X, needlePos.Y));
                    dc.DrawDrawing(SeekNeedle);
                    dc.Pop();
                    break;
            }

            dc.Pop();

            switch (Orientation)
            {
                case RulerOrientation.Vertical:
                    DrawHorizontalLinesText(dc, pos, stepSize);
                    break;
                case RulerOrientation.Horizontal:
                    DrawVerticalLinesText(dc, pos, stepSize);
                    break;
            }
            base.OnRender(dc);
        }
コード例 #33
0
ファイル: MainPanel.cs プロジェクト: SAM33/2016-OOP-UMLEditor
 /* 複寫掉Canvas的繪圖處理,在此加入UML編輯區的繪圖主回圈 */
 protected override void OnRender(DrawingContext dc)
 {
     /* 畫出基本Canvas */
     base.OnRender(dc);
     /* 畫出Canvas邊界 */
     CoreDraw.DrawBorder(dc, new CoreRectRange(new Point(0, 0), new Point(this.ActualWidth, this.ActualHeight)), 5, Brushes.Blue, CoreDraw.BorderStyle_MultipleSegment);
     /* 多型的應用,畫出BaseUMLShape的List,並透過多型來呼叫真正實體類別該呈現的繪圖效果 */
     foreach (BaseUMLShape s in UMLShapes)
     {
         s.Draw(dc);
     }
     /* 繪出前景,前景覆蓋在所有圖層上,用來顯示特殊,或使用工具時的相關繪圖特效 */
     dc.DrawDrawing(Foreground);
 }