如何在Picturebox中定义的区域内显示图像?

时间:2009-08-23 21:43:45

标签: c# .net graphics

作为对我上一个问题的回答,我已经得到了我的地区,但是花了最后两个小时试图展示仅在该区域展示的微小图片;最终目标是能够随意显示我选择的任意数量的图像。 到目前为止这是我的代码:

    void OnPaintRadar(Object sender, PaintEventArgs e)
{
    Graphics g = e.Graphics;        
    Bitmap blip = new Bitmap(tst_Graphics.Properties.Resources.dogtag);
    Rectangle radar_rect = new Rectangle(myRadarBox.Left + 80, myRadarBox.Left + 7, myRadarBox.Width - 200, myRadarBox.Height + 200);
    using (Pen drw_pen = new Pen(Color.White, 1) )
    {
        using (GraphicsPath path = new GraphicsPath())
        {
            path.AddPie(radar_rect, 180, 180);
            path.CloseFigure();
            using (Region rdRegion = new Region(path) )
            {
                g.DrawPath(drw_pen, path);
                g.Clip = rdRegion;
                PictureBox pb = new PictureBox();
                pb.Image = (blip);
                pb.Size = blip.Size;
                g.DrawImage(blip, radar_rect);
            }
        }

    }

}// end paint method

我也尝试过DrawImageUnscaled方法,但是我要么得到一张我的小图片来填充馅饼区域,或者没有显示任何内容。

2 个答案:

答案 0 :(得分:1)

这一行:

pb.Image = (blip);

是导致微小图像显得很大的原因。基本上,你从资源中拉出一个小位图,然后将PictureBox的Image属性设置为该位图(我假设“pb”是表单上的PictureBox)。尝试注释掉该行及其下方的行。

答案 1 :(得分:1)

Click here运行一个示例应用程序,演示如何进行雷达(或至少单向)的基础知识。注意:此应用程序不会对微小图像执行双缓冲或透明度。

该项目的源代码是here