请教C#中如何绘制水平标尺和垂直标尺,还有如何实现手形移动图片这样的功能 如题 1.如何绘制水平标尺和垂直标尺 2.如何实现手形工具(移动图片)这样的功能 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1: 这是个数学上的问题,每改变一次视图大小(比例尺),就计算一下屏幕像素与实际长度之后的关系,然后绘制标尺.这个问题,我想如果你做过矢量图形绘制方面的话一定没什么问题;2: 手形工具实际上就是一个鼠标指针的替换问题,如果不用API,那在C#只支持单色光标,即黑和白两种颜色,其他都不行.至于移动图片,其实就是记录鼠标按下和弹起时的位置关系,然后重新drawimage; lz揭帖率:96.55% 是WIN还是WEB?都没搞明白 移动图片的例子: public partial class Form1 : Form { private Image image = Image.FromFile(@"E:\baby.jpg"); //图片 private Point position = new Point(0, 0); //图片左上角在窗体中的位置 private Point lastPosition; private Point mouseDownPosition; public Form1() { InitializeComponent(); SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.OptimizedDoubleBuffer, true); //启用双倍缓冲 } private void Form1_Paint(object sender, PaintEventArgs e) { Graphics dc = e.Graphics; dc.DrawImage(image, position); } private void Form1_MouseDown(object sender, MouseEventArgs e) { mouseDownPosition = e.Location; lastPosition = position; } private void Form1_MouseMove(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { position.X = lastPosition.X + e.X - mouseDownPosition.X; position.Y = lastPosition.Y + e.Y - mouseDownPosition.Y; Refresh(); } } } 汗,当然是winform的,绘制成什么样都无所谓,告诉方法就行 http://hi.baidu.com/myselfdone/blog/item/def8fdfda707b246d6887d59.html ??关于控制台应用程序的运行和调试的疑问! 在ADO.NET碰到的问题,请前辈指点…谢谢! wcf客户端使用问题 如何在“.CS”文件里面设置<OBJECT>的属性!!?? C#截获因程序指令而输出在控制台的信息 请教:winform 中的DataGrid如何实现行的拖动? 跪求TTS软件源码(源码要很完善) 一条关于查询时间条件限制的SQL怎么写?谢谢! 求救!没法用视图设计器了。 webservices 调用泛型传参问题 谁有《C# Windows程序设计(上下册)》一书源代码 想给自己的程序做简单的加密,我该具备哪些知识?
这个问题,我想如果你做过矢量图形绘制方面的话一定没什么问题;2: 手形工具实际上就是一个鼠标指针的替换问题,如果不用API,那在C#只支持单色光标,即黑和白两种颜色,其他都不行.
至于移动图片,其实就是记录鼠标按下和弹起时的位置关系,然后重新drawimage;
是WIN还是WEB?都没搞明白
{
private Image image = Image.FromFile(@"E:\baby.jpg"); //图片
private Point position = new Point(0, 0); //图片左上角在窗体中的位置
private Point lastPosition;
private Point mouseDownPosition; public Form1()
{
InitializeComponent(); SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.OptimizedDoubleBuffer, true); //启用双倍缓冲
} private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics dc = e.Graphics; dc.DrawImage(image, position);
} private void Form1_MouseDown(object sender, MouseEventArgs e)
{
mouseDownPosition = e.Location;
lastPosition = position;
} private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
position.X = lastPosition.X + e.X - mouseDownPosition.X;
position.Y = lastPosition.Y + e.Y - mouseDownPosition.Y; Refresh();
}
}
}