放大/缩小 PictureBox 但保持像素比例 c#

enlarge / shrink PictureBox but maintain pixel ratio c#

我找不到更好的标题了。 所以这就是我想要做的:

我有一个 28x28 像素的图片框

我正在做一个人工智能项目,我的想法是为数字制作一个 OCR,

我找到了训练数据,但所有图像都是 28x28 像素, 所以我的想法是制作一个这样大小的图片框,

利用它并将该信息提供给神经网络。

我的问题目前是图形化的:

我如何制作一个 28x28 的图片框并以某种方式放大它但保持像素数。 我把图片框放到一个面板里,我想让图片框填满面板。

我的想法是以某种方式放大它,然后在绘制后缩小它,但我该如何实现呢?

数学上如何做到这一点?

在该图片框(线、圆角等)上绘制的最佳方式是什么,以便可以将数据输入神经网络(在对其进行归一化之后)。

我想出了一个解决方案,也许它对以后的人有帮助:

        List<KeyValuePair<int, int>> coordonateList = new List<KeyValuePair<int, int>>();
        // drawPictureBox size is 280 x 280  (28 * 10, 28 * 10)



        private void pbImage_MouseDown(object sender, MouseEventArgs e)
        {
            mouseDown = true;

        }

        private void drawPictureBox_MouseMove(object sender, MouseEventArgs e)
        {
            if (mouseDown)
            {
                Point point = drawPictureBox.PointToClient(Cursor.Position);
                DrawPoint((point.X), (point.Y));
            }
        }

        private void drawPictureBox_MouseUp(object sender, MouseEventArgs e)
        {
            mouseDown = false;
        }

        public void DrawPoint(int x, int y)
        {

            using (Graphics g = Graphics.FromImage(bitmap))
            {
                SolidBrush brush = new SolidBrush(Color.White);
                g.FillRectangle(brush, x, y, 10, 10);
                coordonateList.Add(new KeyValuePair<int,int>(x/10,y/10));
            }
            drawPictureBox.Image = bitmap;
        }
        private void zoomImage(Bitmap bitmap)
        {
            var result = new Bitmap(28,28);
            using (Graphics g1 = Graphics.FromImage(result))
            {
                SolidBrush brush = new SolidBrush(Color.White);

                foreach (var item in coordonateList)
                {
                    g1.FillRectangle(brush, item.Key, item.Value, 1, 1);
                }
            pictureBox1.Image = result;

        }