c#使用自定义像素绘制文本

时间:2014-04-05 13:08:57

标签: c# fonts pixels

我想知道这是否可能: 我得到了一个c#应用程序,其中包含一个显示组件,其中包含在表单上绘制的大约11000个圆圈。

我想要实现的是能够在该显示器上绘制文本,但不能使用"真实"像素,但使用在窗体上绘制的圆(矩形)作为像素。

修改1:

在c#中绘制文本时,你会使用类似Graphics.DrawString(...)的东西,给方法一个矩形(所以坐标),其中应该绘制文本。然后使用屏幕在该矩形中绘制该文本像素。我想要做的是绘制文本,但不使用屏幕像素,但我的显示组成的自定义像素。

修改2

用于在表单上绘制圆圈的方法; Circles是一个由Circle个对象组成的列表,其中circleRectangle返回应绘制圆圈的坐标,Filled告诉方法是否应填充圆圈。

    public void DrawCircles(Graphics g)
    {

        graphics = g;
        graphics.SmoothingMode =System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
        Pen pen = new Pen(Color.Black, penthickness);
        SolidBrush brush = new SolidBrush(Color.White);
        for (int j = 0; j < Circles.Count;j++ )
        {
            graphics.DrawEllipse(pen, Circles[j].CircleRectangle);
            if (Circles[j].Filled)
                brush.Color = fillColor;
            else
                brush.Color = Color.White;
            graphics.FillEllipse(brush, Circles[j].CircleRectangle);

        }

    }

这是可能的,如果是的话,我该怎么做?

1 个答案:

答案 0 :(得分:3)

您可以使用DrawText方法在不可见的BitMap上书写,然后扫描位图的像素并打开相应的圆圈。

上周是否使用了DataGridView的单元格。真的很容易。

以下是一些代码:

    public void drawText(string text, Font drawFont)
    {
        Bitmap bmp = new Bitmap(canvasWidth, canvasHeight);
        Graphics G = Graphics.FromImage(bmp);
        SolidBrush brush = new SolidBrush(paintColor);
        Point point = new Point( yourOriginX, yourOriginY );

        G.DrawString(text, drawFont, brush, point);

        for (int x = 0; x < canvasWidth; x++)
            for (int y = 0; y < canvasHeight; y++)
            {
                Color pix = bmp.GetPixel(x, y);
                    setCell(x, y, pix);     //< -- set your custom pixels here!
            }
        bmp.Dispose();
        brush.Dispose();
        G.Dispose();
    }

修改:您可以使用尺寸和原点作为DrawString,当然