我正在尝试将向用户显示的图像传递给倒计时。为此,我正在使用一个单独的线程,我正在检查何时应该启动倒数计时器,这样,我每隔6秒就会绘制一个图像。
令人讨厌的是,当我将绘制的图像传递给用户界面时,图像的质量会发生变化并且对用户来说看起来很糟糕。
这是我处理图纸的小脚本:
Try
remainingTime = (#12:04:00 AM# - (DateTime.Now - local_DateTimeclick)).ToString("HH:mm:ss")
remainingTimeInSeconds = Convert.ToDateTime(remainingTime).Minute * 60 + Convert.ToDateTime(remainingTime).Second
If remainingTimeInSeconds Mod 6 = 0 Then
g.ResetTransform()
g.TranslateTransform(52, 52)
g.RotateTransform(230 - remainingTimeInSeconds / 6 * 9)
'g.CompositingQuality = Drawing2D.CompositingQuality.HighQuality
'g.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
'g.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
'g.CompositingMode = Drawing2D.CompositingMode.SourceCopy
'g.PixelOffsetMode = Drawing2D.PixelOffsetMode.
g.DrawImage(Tick, 10, 10)
End If
Catch
remainingTime = "Times Up"
End Try
在上一节中, - * local_DateTimeClick *是倒计时开始时设置的变量 - Tick 是一个位图,表示我必须每6个精确秒钟绘制的图像 - g 是图像中的Graphics对象,我将返回主窗口。
还尝试更改 g 的属性,但没有产生任何积极影响。
任何人都知道如何在不改变返回图像质量的情况下使其正常工作?欢迎任何提示/建议。
答案 0 :(得分:4)
因为Drawing2D.SmoothingMode
仅适用于Graphics.DrawEllipse
和Graphics.DrawLine
等2D矢量绘图方法。
它不会影响使用Graphics.DrawImage
绘制位图。
平滑模式指定填充区域的线条,曲线和边缘是否使用平滑(也称为抗锯齿)。
此时您有两种选择:
Image
个对象在不知道你正在改变的实际图像的情况下,我不能说哪种图像更合适。
答案 1 :(得分:0)
从我公司的平面设计师角度来看,我认为你应该裁剪你的图像以适应标签:
1.通过节省处理能力来提高性能
2.它看起来更好吗?!
问候