小编ham*_*idi的帖子

我遇到了Graphics.DrawImage的意外结果

要重现此问题,请在Microsoft Paint中创建一个2x2像素的黑色图像,另存为D:\small.png.然后在Visual Studio中创建一个新的WinForms应用程序,带有无边距的PictureBox.然后使用以下代码:

void f6(Graphics g)
{
    var img = Image.FromFile(@"d:\small3.png");
    var srcRect = new Rectangle(0, 0, img.Width, img.Height);
    int factor = 400;
    var destRect = new Rectangle(0, 0, img.Width * factor, img.Height * factor);
    g.DrawRectangle(new Pen(Color.Blue), destRect);
    g.DrawImage(img, destRect, srcRect, GraphicsUnit.Pixel);
}

void pictureBox1_Paint(object sender, PaintEventArgs e)
{
    f6(e.Graphics);
}
Run Code Online (Sandbox Code Playgroud)

我希望蓝色边距内的整个矩形是黑色的,而输出如下:

在此输入图像描述

为什么会这样?


好,谢谢.我不知道插值.现在,让我们更改代码如下:

void f6(Graphics g)
{
    var img = Image.FromFile(@"d:\small3.png");
    var srcRect = new Rectangle(0, 0, img.Width, img.Height);
    int factor = 200;
    var destRect = new …
Run Code Online (Sandbox Code Playgroud)

.net c# gdi+

3
推荐指数
1
解决办法
2646
查看次数

使用 sscanf 获取零个或多个长度的字符串

下面的代码:

#include <stdio.h>

int main(void) {
  char buf[80] = "salam";
  const char *fmt = "\"%79[^\"]\"";
  int n;

  n = sscanf("\"\"", fmt, buf);
  printf("%d fields were read. buf = '%s'\n", n, buf);
  n = sscanf("\"hamidi\"", fmt, buf);
  printf("%d fields were read. buf = '%s'\n", n, buf);
}
Run Code Online (Sandbox Code Playgroud)

输出:

已读取 0 个字段。buf = 'salam'
已读取 1 个字段。buf = '哈米迪'

这表明 sscanf 函数无法读取具有指定格式字符串的空字符串。是否有一个很好的替代正则表达式格式字符串来通过 sscanf 函数读取长度为零到最多 79 个字符的字符串?换句话说,我希望第一个 sscanf 将 '\0' 插入 buf[0] 并返回 1 而不是 0。有办法吗?

c scanf

2
推荐指数
1
解决办法
53
查看次数

标签 统计

.net ×1

c ×1

c# ×1

gdi+ ×1

scanf ×1