我正在尝试将以下PHP代码转换为c#但我仍然坚持使用c#上的imagecopy等效代码。我使用了Graphics.DrawImage,但似乎没有用。
有效的PHP代码并生成平滑的waved文本
$xp = $this->scale*$this->Xperiod*rand(1,3);
$k = rand(0, 100);
for ($i = 0; $i < ($this->width*$this->scale); $i++) {
imagecopy($this->im, $this->im,
$i-1, sin($k+$i/$xp) * ($this->scale*$this->Xamplitude),
$i, 0, 1, $this->height*$this->scale);
}
我使用Graphics.ImageDraw编写的C#代码会产生糟糕的结果
g.DrawImage之前的变量是php imagecopy使用的变量。int xp = scale * Xperiod * (new Random()).Next(1, 4);
int k = (new Random()).Next(1, 101);
for (int i = 0; i < (bitmap.Width * scale); i++)
{
var dst_x = i - 1;
var dst_y = Convert.ToInt32(Math.Sin(k + i / xp) * scale * Xamplitude);
var src_x = i;
var src_y = 0;
var src_w = 1;
var src_h = bitmap.Height * scale;
g.DrawImage(bitmap, new Rectangle(dst_x, dst_y, 1, bitmap.Height), new Rectangle(src_x, src_y, src_w, src_h), System.Drawing.GraphicsUnit.Pixel);
}
C#的结果很糟糕