在图片左侧和顶部绘制线条,当前实现是否为最快最简方案?
关于图片添加左侧和顶部条带的实现方案分析
你当前的代码只是把原图在新画布上偏移了位置,留出了左侧和顶部的空白,但并没有完成绘制条带的步骤,离目标效果还差一步。单从实现目标的角度来说,这个思路不算完整,更谈不上最快最简洁。
更简洁的实现方式
要达到你要的效果,只需要在现有代码基础上补上绘制左侧和顶部条带的逻辑就行,比如用FillRectangle直接填充对应区域,代码直白且规范:
var srcImg = new Bitmap(@"D:\img.png"); var lineSize = 3; var extImg = new Bitmap(srcImg.Width + lineSize, srcImg.Height + lineSize); using (var extGfx = Graphics.FromImage(extImg)) { // 绘制左侧和顶部的深色条带(颜色可根据需求调整) var stripColor = Color.FromArgb(60, 60, 60); extGfx.FillRectangle(new SolidBrush(stripColor), 0, 0, lineSize, extImg.Height); extGfx.FillRectangle(new SolidBrush(stripColor), lineSize, 0, srcImg.Width, lineSize); // 绘制原图到对应位置 extGfx.DrawImage(srcImg, lineSize, lineSize); }
这里用using包裹Graphics对象,能避免资源泄漏,是更标准的写法。
关于"最快"的考量
如果是普通业务场景,上面的GDI+操作已经足够高效,完全能满足需求。要是追求极致性能,可以用LockBits直接操作Bitmap的像素数据,但这种方式代码复杂度会高很多,对于这种简单的条带绘制,完全没必要舍近求远。
总结来说,优化后的GDI+方案就是最简单且足够快的选择,既不用写复杂逻辑,性能也能达标。
内容的提问来源于stack exchange,提问作者Lexxy
相关产品推荐
相关产品推荐

