Blit 像素从一个图像到位图而不缩放
Blit pixels from one image to bitmap without scaling
我正在使用
从文件创建图像
var img = Image.FromFile(openFileDialog1.FileName);
我也创建了一个相同大小的位图
var bmp = new Bitmap(img.Width, img.Height);
var g = Graphics.FromImage(bmp);
然后我使用
从图像绘制到位图
var r = new Rectangle(tileoffsetx, tileoffsety, tilewidth, tileheight);
g.DrawImage(img, destx, desty, r, GraphicsUnit.Pixel);
我也试过了
var r = new Rectangle(tileoffsetx, tileoffsety, tilewidth, tileheight);
g.SetClip(r);
g.DrawImageUnscaled(img, destx, desty);
在这两种情况下,我都得到了意外的缩放。
(即使我使用的是 DrawImageUnscaled 版本)。
在这两种情况下,我得到的结果都是原始大小的 1/3 左右。
这似乎符合以下事实:图像的分辨率为 300 pixels/inch,位图的分辨率为 96 pixels/inch。
如何复制像素而不考虑像素/英寸?
我尝试了评论中的一个想法,使用采用 2 个矩形的 drawImage 形式。就像
var srcrect = new Rectangle(tileoffsetx, tileoffsety, tilewidth, tileheight);
var destrect = new Rectangle(destx, desty, tilewidth, tileheight);
g.DrawImage(img, destrect, srcrect, GraphicsUnit.Pixel);
成功了!
我正在使用
从文件创建图像var img = Image.FromFile(openFileDialog1.FileName);
我也创建了一个相同大小的位图
var bmp = new Bitmap(img.Width, img.Height);
var g = Graphics.FromImage(bmp);
然后我使用
从图像绘制到位图var r = new Rectangle(tileoffsetx, tileoffsety, tilewidth, tileheight);
g.DrawImage(img, destx, desty, r, GraphicsUnit.Pixel);
我也试过了
var r = new Rectangle(tileoffsetx, tileoffsety, tilewidth, tileheight);
g.SetClip(r);
g.DrawImageUnscaled(img, destx, desty);
在这两种情况下,我都得到了意外的缩放。 (即使我使用的是 DrawImageUnscaled 版本)。
在这两种情况下,我得到的结果都是原始大小的 1/3 左右。
这似乎符合以下事实:图像的分辨率为 300 pixels/inch,位图的分辨率为 96 pixels/inch。
如何复制像素而不考虑像素/英寸?
我尝试了评论中的一个想法,使用采用 2 个矩形的 drawImage 形式。就像
var srcrect = new Rectangle(tileoffsetx, tileoffsety, tilewidth, tileheight);
var destrect = new Rectangle(destx, desty, tilewidth, tileheight);
g.DrawImage(img, destrect, srcrect, GraphicsUnit.Pixel);
成功了!