大家帮小弟我下,要不今天要加班,10点也回不到家,画扇形的有关问题

大家帮我下,要不今天要加班,10点也回不到家,画扇形的问题?
我的需求是这样的:
我自己新建一个用户自定义的用户控件页面,我想在上面画一个扇形,扇形颜色设置为红色,背景颜色设置为黄色的;
我自己写了一部分代码:
 Bitmap objbitmap = new Bitmap(40, 40);
            Graphics objgraphics = Graphics.FromImage(objbitmap);
            //画一个白色背景
            objgraphics.FillRectangle(new SolidBrush(System.Drawing.Color.White), 0, 0, 40, 40);
            //以下为画饼图
            objgraphics.FillPie(new SolidBrush(System.Drawing.Color.Red), 40, 40, 20, 20, 45, 30);
            this.AddChild(objbitmap);
但是不知道怎么显示?
------解决思路----------------------
写在Paint事件里去
------解决思路----------------------
到底是要直接画在用户控件上还是画在用户控件里的某个控件上?
------解决思路----------------------
那就把你代码写进用户控件的Paint事件里去呗
------解决思路----------------------
引用:
Quote: 引用:

那就把你代码写进用户控件的Paint事件里去呗

 public partial class Pie : UserControl
    {
        public Pie()
        {
            InitializeComponent();
            Bitmap objbitmap = new Bitmap(40, 40);
            Graphics objgraphics = this.pie1.;
            //画一个白色背景
            objgraphics.FillRectangle(new SolidBrush(System.Drawing.Color.White), 0, 0, 40, 40);
            //以下为画饼图
            objgraphics.FillPie(new SolidBrush(System.Drawing.Color.Red), 0, 0, 20, 20, 45, 30);
        }
    }
我不知道你在说什么,我现在设置好Bitmap ,但是不知道怎么赋值。
大家帮小弟我下,要不今天要加班,10点也回不到家,画扇形的有关问题是这样吗?
------解决思路----------------------
private void UserControl1_Paint(object sender, PaintEventArgs e)
        {
            //Bitmap objbitmap = new Bitmap(200, 200);
            //Graphics objgraphics = Graphics.FromImage(objbitmap);
            Graphics objgraphics = e.Graphics;
            objgraphics.DrawPie(new Pen(System.Drawing.Color.Yellow, 5), 0, 0, 100, 100, 45, 45);
            objgraphics.FillPie(new SolidBrush(System.Drawing.Color.Red), 0, 0, 100, 100, 45, 45);
        }
    userControl1为用户控件,响应Paint事件
------解决思路----------------------
那你自己在构造函数里加这句:  this.Paint += new PaintEventHandler(UserControl1_Paint);
------解决思路----------------------
控件上的图案怎么来的?重绘,怎么重绘的?执行了Paint事件或PaintBackground事件,所以想在控件上画东西你就得写在Paint事件里,你得知道本质的东西和原理

        void drawPie(PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            g.FillRectangle(Brushes.White, 0, 0, 111, 111);
            g.FillPie(Brushes.Red, 0, 0, 111, 111, 45, 30);
        }

        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            drawPie(e);
        }



------解决思路----------------------
你不早说是WPF   我给你说的是winform的做法
------解决思路----------------------
引用:
Quote: 引用:

你不早说是WPF   我给你说的是winform的做法

我的是WPF的,不好意思了。WPF有解决办法么。
protected override void OnRender(DrawingContext dc)
        {
            base.OnRender(dc);

            dc.DrawPie(new Pen(System.Drawing.Color.Yellow, 5), 0, 0, 100, 100, 45, 45);
            dc.FillPie(new SolidBrush(System.Drawing.Color.Red), 0, 0, 100, 100, 45, 45);
        }

------解决思路----------------------
引用:
Quote: 引用:

Quote: 引用:

你不早说是WPF   我给你说的是winform的做法

我的是WPF的,不好意思了。WPF有解决办法么。
protected override void OnRender(DrawingContext dc)
        {
            base.OnRender(dc);

            dc.DrawPie(new Pen(System.Drawing.Color.Yellow, 5), 0, 0, 100, 100, 45, 45);
            dc.FillPie(new SolidBrush(System.Drawing.Color.Red), 0, 0, 100, 100, 45, 45);
        }
WPF不是很熟,我只知道WPF中绘制需要OnRender方法和DrawingContext对象,上面只是个思路,
------解决思路----------------------
https://social.msdn.microsoft.com/Forums/windowsserver/zh-CN/adf8fffc-a610-4b69-ab90-4862e24adf62/wpf-?forum=wpfzhchs   你参考下吧   只能帮到这儿了
------解决思路----------------------
 DrawingVisual drawVisual = new DrawingVisual();
                            DrawingContext drawContext = drawVisual.RenderOpen();
                            drawContext.DrawImage(background, new Rect(0, 0, 800, 500)); //画图片
  drawContext.DrawText(new FormattedText(GetCarNameById(dicCarInfo, item.Key), CultureInfo.GetCultureInfo("en-us"), FlowDirection.LeftToRight, new Typeface("Verdana"), 15, Brushes.Black), new Point(points[i].M_Point.X, points[i].M_Point.Y - 16));//写文字
------解决思路----------------------
打开Blend,拖一个饼形控件(pie),调整一下属性,就出来了
大家帮小弟我下,要不今天要加班,10点也回不到家,画扇形的有关问题


<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:ed="http://schemas.microsoft.com/expression/2010/drawing"
x:Class="WpfApplication3.MainWindow"
x:Name="Window"
Title="MainWindow"
Width="640" Height="480">

<Grid>

<ed:Arc ArcThickness="1" ArcThicknessUnit="Percent" EndAngle="170" Fill="#FFE74514" HorizontalAlignment="Right" Height="100" Margin="0,53,36,0" Stretch="None" Stroke="Black" StartAngle="100" VerticalAlignment="Top" Width="100"/>
</Grid>
</Window>