Graphics.DrawImage函数其中一种的用法

原型

Status DrawImage(IN Image* image,
                     IN const RectF& destRect,
                     IN REAL srcx,
                     IN REAL srcy,
                     IN REAL srcwidth,
                     IN REAL srcheight,
                     IN Unit srcUnit,
                     IN const ImageAttributes* imageAttributes = NULL,
                     IN DrawImageAbort callback = NULL,
                     IN VOID* callbackData = NULL)


使用图片加载并绘制图片的一部分

Image* pImage=Gdiplus::Image::FromFile(L"c:\\small.png");
    RectF grect;
      //  grect.X=m_rcRect.left, grect.Y=m_rcRect.top; grect.Width = (int)(nStringWidth*g_dbDpi); grect.Height = (int)(iHeight*g_dbDpi);
    grect.X= 450;
    grect.Y=500;



    int iWidth = pImage->GetWidth()/4;
    int iHeight = pImage->GetHeight();


    grect.X= 600;
    grect.Y=500;
    grect.Width=200;
    graphics.DrawImage(pImage, grect, iWidth*0,0,100,iHeight, UnitPixel);

   此处可以看出,在RectF中确定的width是画出的图片的实际宽度,而参数srcwidth是加载图片的宽度,如果加载的图片宽度小于实际的宽度就会进行加长填充,反之则会压缩加载图片

在C#中,针对GDI位图的图像膨胀算法通常涉及到像素级别的处理,这可能涉及到对每个像素点周围的一组邻域进行检查,并将原像素颜色替换为新颜色,以达到膨胀的效果。这里我们可以使用Bitmap类及其LockBits方法来直接访问位图的像素数据。 以下是一个简单的示例,展示了如何使用C#来实现图像膨胀: ```csharp using System.Drawing; using System.Drawing.Imaging; public Bitmap ImageElevation(Bitmap originalBitmap, int pixelSize) { // 创建一个临时位图,用于存放膨胀后的结果 Bitmap resultBitmap = new Bitmap(originalBitmap.Width + pixelSize * 2, originalBitmap.Height + pixelSize * 2); // 获取原始位图的锁,以便修改像素 Rectangle srcRect = new Rectangle(0, 0, originalBitmap.Width, originalBitmap.Height); Rectangle destRect = new Rectangle(pixelSize, pixelSize, originalBitmap.Width + pixelSize * 2, originalBitmap.Height + pixelSize * 2); using (Graphics graphics = Graphics.FromImage(resultBitmap)) { // 将原始位图复制到临时位图的一部分,同时扩大边界 graphics.DrawImage(originalBitmap, destRect, srcRect, GraphicsUnit.Pixel); // 用新的颜色填充扩张区域 Brush brush = new SolidBrush(Color.Transparent); // 需要替换为你想要的颜色 graphics.FillRectangle(brush, destRect.X - pixelSize, destRect.Y - pixelSize, pixelSize * 2, pixelSize * 2); } return resultBitmap; } ``` 在这个例子中,`pixelSize` 参数表示每边要膨胀多少像素。这个函数会返回一个膨胀后的位图,其中边缘部分添加了透明色(你可以根据需要更改填充颜色)。 注意:实际应用中可能还需要考虑性能因素,如使用并行处理来加速膨胀过程(如果图片足够大),以及对内存使用的优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值