在另一个位图上叠加位图

时间:2014-04-15 13:25:42

标签: c# bitmap

在单个位图上,我需要显示图形和文本值。所以我所做的是创建一个带点的位图,并创建另一个带有文本的位图并放置在大位图上。

我尝试使用画笔来编写文本,但即使设置了trasparency,我也无法看到底层图形。

相反,我想设置文本位图的透明度,但我创建的位图是24位rgb。那么我们可以设置24位地图的透明度。

Bitmap textBitmap = null;   textBitmap = new Bitmap(10,10,PixelFormat.Format24bppRgb);

    using (Graphics memoryGrahics =
                     Graphics.FromImage(textBitmap))
    {

        memoryGrahics.FillRectangle(Brushes.Black, new Rectangle(0, 0, 100, 100));
        memoryGrahics.DrawString(result, f, Brushes.White, x, y);
    }

    //placing the text bitmap on the graphbitmap    
    using (Graphics g = Graphics.FromImage(GraphBitmap))
    {
        g.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceOver;
        textBitmap.MakeTransparent();
        g.DrawImage(textBitmap, 0, 0);
        return GraphBitmap;
    }

1 个答案:

答案 0 :(得分:0)

好吧..好像你正在使用2个不同的图形对象......虽然1个带有1个位图的图形对象可以处理自定义图形的多个布局,如下所示:

        int width = 800, height = 600;

        var bit = new Bitmap(width, height);
        var g = Graphics.FromImage(bit);

        g.SmoothingMode = SmoothingMode.AntiAlias;
        g.InterpolationMode = InterpolationMode.HighQualityBicubic;

        var area = new Rectangle(0, 0, width, height);
        g.FillRectangle(new LinearGradientBrush(area, Color.PaleGoldenrod, Color.OrangeRed, 45), area);

        g.DrawImage(Image.FromFile(@"your image"), new Point(10, 10));

        g.DrawString("sample", new System.Drawing.Font("Tahoma", 56), new SolidBrush(Color.Black), new PointF(50, 50));

        pictureBox1.Image = bit;

请注意,g.DrawImage方法也可用于加载其他位图