请教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 如何把处理过后的字符串转为文件流 请教!!! DataGridViewComboBoxColumn绑定数据源后选中其中某项的问题 合并两个数据集合 显示回车换行,用哪个数据显示控件? C#入门问题: C# 3D绘图 WinForm里如何得到DataGrid里选中的行的行号?多谢 用C#开发WINDOWS应用程序时遇到的一些问题 为什么启动visual studio.net失败 谁有《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();
}
}
}