1)编辑窗体Form1的Icon属性,点击 … 打开对话框
2)准备一个图标文件(ico)文件
3)这样就完成了图标设置,效果如下
详细见:>
/
主要是对 PictureBox 的 *** 作
截取屏幕图像
获取屏幕指定像素颜色
旋转和翻转
虚拟选择框绘制
控件绘图
为了方便,所有步骤在一个方法中完成
创建了一个新的 Form 对象
在该 Form 中添加了一个 PictureBox 对象
/
// 在 Form_Load 中调用
private void CSDNSample_PictureBoxHandle()
{
// 复制屏幕,创建原始
Bitmap image = new Bitmap(
ScreenPrimaryScreenBoundsWidth,
ScreenPrimaryScreenBoundsHeight);
using (Graphics g = GraphicsFromImage(image))
{
gCopyFromScreen(
0, 0, 0, 0,
imageSize,
CopyPixelOperationSourceCopy);
gSave();
}
// 创建 PictureBox 对象
PictureBox box = new PictureBox();
boxLocation = new Point(0, 0);
boxSizeMode = PictureBoxSizeModeStretchImage;
boxSize = imageSize;
boxImage = image;
// 创建 Form 对象
Form f = new Form();
fAutoScroll = true; // 自动滚动
fSize = new Size(800, 600);
// From_FormClosed 用于释放资源
fFormClosed += (sender, e) => { imageDispose(); };
// From_MouseWheel 用于缩放
// 由于滚动条和缩放同时进行 会有点不爽
// 建议右键菜单或 Control/Shift/Alt + 鼠标滚轮组合实现
fMouseWheel += (sender, e) =>
{
if (eDelta > 0)
{
// 限制放大效果 600% 以内
if (boxWidth / imageWidth < 6)
{
boxSize = new Size(
(int)(boxWidth 11),
(int)(boxHeight 11));
}
}
else
{
// 限制缩小效果 15% 以内
if ((float)boxWidth / (float)imageWidth > 015f)
{
boxSize = new Size(
(int)(boxWidth 09),
(int)(boxHeight 09));
}
}
};
// 用于记录鼠标按下时的位置
Point pt = PointEmpty;
// PictureBox_MouseDown 用于记录鼠标位置 绘制屏幕十字标记
boxMouseDown += (sender, e) =>
{
if (eButton == MouseButtonsLeft)
{
pt = eLocation;
// CursorPosition 获取全局鼠标位置(屏幕位置)
// CopyFromScreen 拷贝 1 个屏幕像素并生成
// BitmapGetPixel 获取上指定像素的颜色
using (Bitmap bitmap = new Bitmap(1, 1))
{
using (Graphics g = GraphicsFromImage(bitmap))
{
gCopyFromScreen(
CursorPositionX, CursorPositionY, 0, 0,
bitmapSize, CopyPixelOperationSourceCopy);
gSave();
}
// 设置窗口文本
// 显示鼠标当前位置和鼠标位置的像素颜色
Color color = bitmapGetPixel(0, 0);
fText = stringFormat("Pos: {0}, Color: {1}",
eLocation, color);
}
using (Graphics g = GraphicsFromHwnd(boxHandle))
{
using (Pen p = new Pen(ColorIndianRed, 3))
{
gDrawLine( // 画十字图形的 X 轴
p, new Point(eX - 10, eY), new Point(eX + 10, eY));
gDrawLine( // 画十字图形的 Y 轴
p, new Point(eX, eY - 10), new Point(eX, eY + 10));
}
}
}
};
// PictureBox_MouseUp 用于清除鼠标位置信息和屏幕十字标记
boxMouseUp += (sender, e) =>
{
if (eButton == MouseButtonsLeft)
{
pt = PointEmpty;
boxRefresh();
}
};
// PictureBox_MouseMove 用于绘制选择框
boxMouseMove += (sender, e) =>
{
// 设置窗口文本 显示鼠标当前位置
fText = stringFormat("Pos: {0}", eLocation);
if (eButton == MouseButtonsLeft && pt != PointEmpty)
{
using (Graphics g = GraphicsFromHwnd(boxHandle))
{
using (Pen p = new Pen(ColorIndianRed, 1))
{
// pt1 用于判断鼠标是否离开了 PictureBox
// 如果离开则重设 pt1
// 如此可保证被绘制的矩形一定出现在 PictureBox 中
Point pt1 = eLocation;
if (pt1X < 0) pt1X = 0;
if (pt1Y < 0) pt1Y = 0;
if (pt1X > boxWidth - 1) pt1X = boxWidth - 1;
if (pt1Y > boxHeight - 1) pt1Y = boxHeight - 1;
boxRefresh(); // 不刷新的话 会出现N个矩形
pDashStyle = SystemDrawingDrawing2DDashStyleDash;
gDrawPolygon(p, new Point[] {
pt,
new Point (pt1X, ptY),
pt1,
new Point(ptX, pt1Y) });
}
}
}
};
// 记录当前翻转样式
int rotate = 0;
// PictureBox_MouseDoubleClick 用于翻转
boxMouseDoubleClick += (sender, e) =>
{
if (eButton == MouseButtonsLeft)
{
// 由于是对 PictureBox 进行的 *** 作
// 只是进行了翻转,但大小未变
// 所以需要通过的某个边判断
// 是否因翻转而导致 Width / Height 互换
int imgWidth = boxImageWidth;
boxImageRotateFlip((RotateFlipType)rotate);
if (++rotate > 7) rotate = 0;
if (imgWidth == boxImageWidth) return;
boxSize = new Size(boxHeight, boxWidth);
}
};
fControlsAdd(box);
fShow();
}
用的listview,然后要进行二次封装,修改绘图样式等,listview的列表分组模式,你要想自己做一模一样的,非常费劲,因为样式修改的部分贼多。下图是我的listview简单修改显示样式后的样子,你要改成工具箱那样,还需要更多的修改,顶部的右上角的3个按钮,那是一个容器,panel或者一个无边框的窗口,右上角做了3个按钮来实现的。你看我图里的listview只要关闭标题栏, *** 作上就跟工具箱差不多了
您好,我来为您解答:
最简单的就是找个皮肤控件 比如 IrisSkin。
先要时髦,先要找到时髦的美工。这样的美工通常都不懂开发,但是她应该可以做出时髦的浅层的创意来。
如果我的回答没能帮助您,请继续追问。
以上就是关于如何修改C#winform程序图标全部的内容,包括:如何修改C#winform程序图标、关于 C#编写的WINFORM程序、C# winform PictureBox Handle等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)