相关疑难解决方法(0)

如何缩放图片框中的某个点

这是我的代码。
我可以缩放图片框,但不能缩放。旋转鼠标滚轮时如何缩放到鼠标点?

变量是:-

private double m_dZoomscale = 1.0;    //THIS IS THE ZOOM SCALE TO WHICH EACH OBJECT 
                                      //ARE ZOOMED IN THE CANVAS  

public static double s_dScrollValue = .01;
                                      //scale factor value for mouse scroll zooming
Run Code Online (Sandbox Code Playgroud)

油漆代码是:-

private void m_Picturebox_Canvas_Paint(object sender, PaintEventArgs e)
{
   Graphics g = e.Graphics;
   g.ScaleTransform((float)m_dZoomscale, (float)m_dZoomscale);
}
Run Code Online (Sandbox Code Playgroud)

主要代码是:-

    protected override void OnMouseWheel(MouseEventArgs mea)
    {
        m_Picturebox_Canvas.Focus();
        if (m_Picturebox_Canvas.Focused == true)
        {
            if (mea.Delta > 0)
            {
                ZoomInScroll();
            }
            else if (mea.Delta < 0)
            {
                ZoomOutScroll();
            }
        }
    } …
Run Code Online (Sandbox Code Playgroud)

c# visual-studio-2010 mousewheel zooming c#-4.0

5
推荐指数
1
解决办法
9871
查看次数

使用矩阵放大固定点

我正在尝试使用单个全局矩阵实现关于固定点的缩放。运行时,如果单击控件,它会缩放,但每次单击时测试矩形会进一步向下和向右移动。据我所知,每个转换(到原点、缩放和返回到原始位置)都单独工作正常,但是当我将所有 3 个组合在一起时,我没有得到正确的行为。

缩放代码

单击控件时,代码(应该)转换到原点,按比例放大,然后转换回原始位置。

protected override void OnMouseDown(MouseEventArgs e)
      {
         base.OnMouseDown(e);
         if (e.Button == System.Windows.Forms.MouseButtons.Left)
         {
            float xPos = e.Location.X - viewMatrix.OffsetX;
            float yPos = e.Location.Y - viewMatrix.OffsetY;

            Matrix translateOrigin = new Matrix(1, 0, 0, 1, -xPos, -yPos);
            Matrix translateBack = new Matrix(1, 0, 0, 1, xPos, yPos);
            Matrix scaleMatrix = new Matrix(1.5f, 0, 0, 1.5f, 0, 0);

            viewMatrix.Multiply(translateOrigin);
            viewMatrix.Multiply(scaleMatrix);
            viewMatrix.Multiply(translateBack);
         }
         else
         {
            viewMatrix = new Matrix();
         }
         Refresh();
      }
Run Code Online (Sandbox Code Playgroud)

绘图代码

这是我用来绘制的代码。这两个矩形仅供参考,第二个值new Pen(2)是为了确保我的线条保持 1 像素宽。

protected …
Run Code Online (Sandbox Code Playgroud)

c# matrix winforms

4
推荐指数
1
解决办法
3999
查看次数

标签 统计

c# ×2

c#-4.0 ×1

matrix ×1

mousewheel ×1

visual-studio-2010 ×1

winforms ×1

zooming ×1