相关疑难解决方法(0)

使用不安全代码有什么含义

除了代码本身可以直接访问内存的事实.使用"/ unsafe"编译器标志和"fixed"关键字的其他含义是什么?是否存在与我的.exe的代码签名和部署相关的影响(我的应用程序仅限桌面)?

(这不是关于我是否应该这样做,为什么我的问题在这里讨论)

.net clr unsafe unmanaged fixed

23
推荐指数
2
解决办法
2114
查看次数

SetPixel太慢了.是否有更快的方法来绘制位图?

我正在制作一个小型油漆程序.我在位图上使用SetPixel来绘制线条.当画笔大小变大时,如同25个像素一样,会有明显的性能下降.我想知道是否有更快的方法来绘制位图.以下是该项目的背景:

  • 我正在使用位图,以便我可以利用图层,如Photoshop或GIMP.
  • 正在手动绘制线条,因为这最终将使用图形输入板压力来改变线条长度的大小.
  • 这些线最终应沿着边缘进行抗变形/平滑处理.

我将包括我的绘图代码,以防万一这是缓慢而不是Set-Pixel位.

这是在绘画发生的窗口:

    private void canvas_MouseMove(object sender, MouseEventArgs e)
    {
        m_lastPosition = m_currentPosition;
        m_currentPosition = e.Location;

        if(m_penDown && m_pointInWindow)
            m_currentTool.MouseMove(m_lastPosition, m_currentPosition, m_layer);
        canvas.Invalidate();
    }
Run Code Online (Sandbox Code Playgroud)

MouseMove的实现:

    public override void MouseMove(Point lastPos, Point currentPos, Layer currentLayer)
    {
        DrawLine(lastPos, currentPos, currentLayer);
    }
Run Code Online (Sandbox Code Playgroud)

DrawLine的实现:

    // The primary drawing code for most tools. A line is drawn from the last position to the current position
    public override void DrawLine(Point lastPos, Point currentPos, Layer currentLayer)
    {
        // Creat a line vector
        Vector2D vector …
Run Code Online (Sandbox Code Playgroud)

c# graphics gdi bitmap layer

12
推荐指数
2
解决办法
2万
查看次数

标签 统计

.net ×1

bitmap ×1

c# ×1

clr ×1

fixed ×1

gdi ×1

graphics ×1

layer ×1

unmanaged ×1

unsafe ×1