㈠ 新手请教:这个是C#画图的代码,不过使画笔,画刷什么的老是出错

flag++; //进行修改
if (MyDrawType != 0 && MyDrawType != 6 && MyDrawType != 7)
{
step++;
if (step == 1)
{
MyStartPos.X = e.X; //记录起点
MyStartPos.Y = e.Y;
step++;
}
if (step == 3)
{
MyEndPos.X = e.X; //记录终点
MyEndPos.Y = e.Y;
}
}
if (MyDrawType == 6) //画曲线
{
step = 0;
this.Points.Add(new Point(e.X, e.Y)); //记录当前点
this.temppoint.Add(new Point(e.X, e.Y)); //记录临时点
}
if (MyDrawType == 7)
{
if (e.X > this.chooseboxLeft && e.Y > this.chooseboxTop && e.X < (this.chooseboxLeft + this.chooseboxWidth) && e.Y < (this.chooseboxTop + this.chooseboxHeight))
{//移动选择框
step = 1;
this.pictureBox1.Image = bmp;//刷新图像
MyStartPos.X = e.X;
MyStartPos.Y = e.Y;
}
}

if (MyEditType != 0)
{
flag++;
if (MyEditType == 1)
{
bmp = (Bitmap)this.pictureBox1.Image;
for (int i = e.X + 10; i < e.X + 23; i++)
for (int j = e.Y + 10; j < e.Y + 23; j++)
{
bmp.SetPixel(i, j, this.Back); //用背景色着色,实现橡皮擦功能
}
this.pictureBox1.Image = bmp;
step = 1;
}
if (MyEditType == 2)
{
bmp = (Bitmap)this.pictureBox1.Image;
bmp.SetPixel(e.X + 5, e.Y + 5, this.Fore); //画笔
this.pictureBox1.Image = bmp;
step = 1;
}
if (MyEditType == 5)
{
bmp = (Bitmap)this.pictureBox1.Image;
for (int i = e.X + 10; i < e.X + 23; i++)
for (int j = e.Y + 10; j < e.Y + 23; j++) //画刷
{
bmp.SetPixel(i, j, this.Fore);
}
this.pictureBox1.Image = bmp;
step = 1;
}

}

}

㈡ 代码HPEN red_pen=createPen(PS_SOLID,1,RGB(255,0,0))的涵义是什么

CPen::CreatePen

BOOL CreatePen( int nPenStyle, int nWidth, COLORREF cfColor );
BOOL CreatePen( int nPenStyle, int nWidth, const LOGBRUSH* pLogBrush, int nStyleCount = 0, const DWORD* lpStyle = NULL );

返回值:如果成功则返回非零值或逻辑画笔的句柄;否则返回0。

参数: nPenStyle 指定画笔的风格。其可能取值的列表,请参见CPen构造函数中的nPenStyle参数。
nWidth 指定画笔的宽度。
· 对于CreatePen的第一个版本来说,如果这个值为0,则不管是什么映射模式,以设备单位表示的宽度总是一个像素。
· 对于CreatePen的第二个版本,如果nPenStyle是PS_GEOMETRIC,则宽度以逻辑单位给出。如果nPenStyle是PS_COSMETIC,则宽度必须设置为1。

crColor 包含画笔的一个RGB颜色。
pLogBrush 指向一个LOGBRUSH结构。如果nPenStyle是PS_COSMETIC,则此LOGBRUSH结构的lbColor成员指定画笔的颜色,此LOGBRUSH结构的lbStyle成员必须设置为BS_SOLED。如果nPenStyle为PS_GEOMETRIC,则此结构的所有成员都必须用于指定画笔画刷属性。
nStyleCount 指定lpStyle数组的长度(以双字为单位)。如果nPenStyle不是PS_USERSTYLE,这个值必须是零。
lpStyle 指向一个双字值的数组。第一个值指定一个用户定义的风格中第一段虚线的长度,第二个值指定第一段空白的长度,如此等等。如果nPenStyle不是PS_USERSTYLE,则这个指针必须为NULL。

说明:
CreatePen的第一个版本用指定的风格、宽度和颜色来初始化一支画笔。此画笔以后可选作为任何设备环境的当前画笔。
宽度大于1个像素的画笔总是具有PS_NULL,PS_SOLED或PS_INSIDEFRAME风格。
如果画笔具有PS_INSIDEFRAME风格和某一不匹配逻辑调色板中颜色的颜色,则此画笔用一个混合色来进行绘制。PS_SOLID画笔风格不能用一个混合色来创建一支画笔。当画笔的宽度小于或等于1时,PS_INSIDEFRAME风格等同于PS_SOLID风格。
CreatePen的第二个版本初始化一支具有指定的风格、宽度和刷子属性的逻辑装饰画笔或几何画笔。一支装饰画笔的宽度总是1;几何画笔的宽度总是由世界单位指定。当应用程序创建了一支逻辑画笔之后,它可通过调用CDC::SelectObject函数来将此画笔选入一个设备环境中。当一支画笔被选入一个设备环境之后,它就可以用于画直线或曲线。
· 如果nPenStyle为PS_COSMETIC和PS_USERSTYLE,则lpStyle数组中的项指定风格单位中虚线和空白的长度。一个风格单位由使用此画笔画线的设备定义。
· 如果nPenStyle为PS_GEOMETRIC和PS_USERSTYLE,则lpStyle数组中的项指定虚线和空白的长度(用逻辑单位表示)。
· 如果nPenStyle为PS_ALTERNATE,则忽略风格单位而交替设置像素。
当一个应用程序不再需要一支给定的画笔时,它将调用CGdiObject::DeleteObject成员函数或销毁CPen对象,以使资源不再使用。当一支画笔被选入一个设备环境后,应用程序就不能删除这支画笔了。
RGB(255,0,0):表示颜色值,这里是红色,R(red)G(green)B(blue),三个分量,对应的值范围都是0~255。.
1:是画笔的宽度,这里是1个像素那么宽
PS_SOLID:画笔风格,不能用一个混合色来创建一支画笔

㈢ c++中选择画笔的问题。代码CClientDC d(this); CPen pen(0,0,RGB(255,0,0));

SelectObject的返回值就是原来的画笔。看看MSDN。

㈣ C++应用程序中,画图程序 创建画笔的代码 急~~

要想在MFC中画出有颜色的线条,首先就要设置DC的画笔,我们可以按如下方法来设置画笔:
第一步:在View类中添加一个COLORREF类型的数据成员m_Color(用来保存画笔颜色值),在构造函数中对其初始化,
m_Color(RGB(255,0,0))
第二步:在WM_LBUTTONDOWN和WM_LBUTTONUP消息的处理函数OnLButtonDown和OnLButtonUp中添加如下代码:
void CdrView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
m_StartPoint=point; //用来保存画线起始点的位置,即鼠标左键第一次按下时的位置,类型为CPoint
CView::OnLButtonDown(nFlags, point);
}
void CdrView::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
//第一种方法,用HDC绘图,使用API函数设置画笔颜色
/*HDC hdc;
hdc=::GetDC(m_hWnd);
::SelectObject(hdc,CreatePen(PS_SOLID,1,m_Color)); //向设备上下文(设备描述表)中插入由CreatePen函数创建的画笔
::MoveToEx(hdc,m_StartPoint.x,m_StartPoint.y,NULL);
::LineTo(hdc,point.x,point.y);
::ReleaseDC(m_hWnd,hdc);*/
//第二种,用CDC类绘图,使用CPen类构造画笔
/*CDC aDC;
CPen pen(PS_SOLID,1,m_Color); //建立一个画笔类对象,构造时设置画笔属性
aDC.m_hDC=::GetDC(m_hWnd);
aDC.SelectObject(&pen);
aDC.MoveTo(m_StartPoint);
aDC.LineTo(point);
::ReleaseDC(m_hWnd,aDC.m_hDC);*/
//第三种,用CClient类绘图,使用CPen类构造画笔,跟第二种方法不同的是用CClientDC时不用手动去获取DC,和释放DC
CClientDC aDC(this); //CClientDC的构造函数需要一个参数,这个参数是指向绘图窗口的指针,我们用this指针就可以了
CPen pen(PS_SOLID,1,m_Color); ////建立一个画笔类对象,构造时设置画笔属性
aDC.SelectObject(&pen);
aDC.MoveTo(m_StartPoint);
aDC.LineTo(point);
CView::OnLButtonUp(nFlags, point);
}
void CdrView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CView::OnMouseMove(nFlags, point);
}
运行程序,就可以画出红色的线条来,如果想画其它颜色,只需要设置m_Color的值即可,例如,要设置成绿色,可以在View类的构造函数处把m_Color(RGB(255,0,0))改写成m_Color(RGB(0,255,0))。颜色的改变是通过设置RGB(0,255,0)中的三个参数来实现的。RGB中的三个参数分别对应三原色的红、绿、蓝,每一个参数的取值范围都是0~255,通过不同数值的组合,就可以画出各种各样的颜色来了。

㈤ C#用画笔绘图时,如何用代码获取当前画笔的坐标值(即当前的X,Y)

MousePosition就是当前坐标,是一个Point类型(X=MousePosition.X,Y=MousePosition.Y)。

㈥ flash中,怎么做一个画笔工具代码

画笔一:帧-动作:
this.createEmptyMovieClip("canvas_mc", 999);
var
isDrawing:Boolean = false;
//
clear_btn.onRelease = function()
{
canvas_mc.clear();
};
//
var mouseListener:Object = new
Object();
mouseListener.onMouseDown = function() {
canvas_mc.lineStyle(5,
0xFF0000, 100);
canvas_mc.moveTo(_xmouse, _ymouse);
isDrawing =
true;
};
mouseListener.onMouseMove = function() {
if (isDrawing)
{
canvas_mc.lineTo(_xmouse,
_ymouse);
updateAfterEvent();
}
};
mouseListener.onMouseUp =
function() {
isDrawing =
false;
};
Mouse.addListener(mouseListener);
建一个清除按钮,实例名:clear_btn。
——————————————————————————————————————————————
画笔二:
帧-动作:
var
empiremue = new
ContextMenu();
//删除原始菜单状态!
empiremue.hideBuiltInItems();
//自定义菜单项目!
empiremue.customItems.push(new
ContextMenuItem("鼠标写字", h1));
empiremue.customItems.push(new
ContextMenuItem("清除字迹", h2));
empiremue.customItems.push(new
ContextMenuItem("退出程序", h3,true));
empiremue.customItems.push(new
ContextMenuItem("退出写字", h4));
function h3()
{
fscommand("quit");
}
function h4()
{
Mouse.show();//显示鼠标
_root.clear();
//_root.pen=false;
_root.onMouseMove=function(){
updateAfterEvent();
pen._x
= _root._xmouse+1200;
pen._y = _root._ymouse+800;
}}
function h1()
{
stop();
//_root.mc._visible=false;//影片不可见
var
xx=Math.random()*0xFFFFFF;
//Mouse.show();//显示鼠标
_root.createEmptyMovieClip("pen",
1);
pen.lineStyle(4, 0x0082FF);
pen._x = 200;
pen._y = 200;

//浅兰色笔体
pen.beginFill(0x0082FF, 100);
pen.lineTo(20, -8);

pen.lineTo(65, -8);
pen.lineTo(65, 8);
pen.lineTo(20, 8);

pen.lineTo(20, -8);

pen.beginFill(0x0082FF, 100);
endFill(pen);
pen.beginFill(xx,
100);
pen.lineStyle(4, xx)
pen.lineTo(0, 0);
pen.lineTo(20, 8);

pen.lineTo(20, -8);

endFill(pen);
pen._rotation = -50;
Mouse.hide();

//定义onMouseDown函数

//Math.random()*0xFFFFFF用代替可使每笔的颜色不同
_root.onMouseDown=function(){
//设定线条样式
_root.lineStyle(4,xx,100);
//绘制直线;
_root.moveTo(_root._xmouse,_root._ymouse);
//定义变量isdrawing,并赋值为真
isdrawing=true;
}
_root.onMouseMove=function(){
updateAfterEvent();
pen._x
= _root._xmouse;
pen._y =
_root._ymouse;
//如果变量为真
if(isdrawing==true){
//绘制直线断

_root.lineTo(_root._xmouse,_root._ymouse);
//刷新画面;

updateAfterEvent();
}
}
_root.onMouseUp=function(){
//设定变量isdrawing的值为假
isdrawing=false;
}
}
function
h2() {
Mouse.hide();
_root.clear();
}

_root.menu = empiremue;

画笔三:用鼠标画线
onMouseDown=function ()
{
lineStyle(2,0*000000,100)
lineTo(_xmouse,_ymouse)
}

onMouseMove = function() {
if (a)
{
lineStyle(2,0x000000,100);//指定线条的粗度为2,颜色为黑色,透明度为100;
lineTo(_xmouse,
_ymouse); //画线至鼠标所在位置;
}
updateAfterEvent(); //强制刷新;Flash
强制进行显示刷新工作。该语句不依赖于时间帧的触发。
};
onMouseDown = function() {
a = true;
//鼠标按下,给a变量赋值true,即执行上面的if后面括号内的语句,开始画线;
moveTo(_xmouse,
_ymouse);//重新定位开始点;
};
onMouseUp = function() {
a = false;
//鼠标松开,给a变量赋值false,不执行上面的if后面括号内的语句,停止画线;

};

画笔四:
*两点间画直线
*画螺旋线
*画正方形、圆、椭圆
*抛物线
*正弦、余弦线

使用方法:加到帧中就可

// 画直线
// / x1, y1: 起点坐标
// x2, y2: 终点坐标
// k是层次

Movieclip.prototype.drawline = function(x1, y1, x2, y2, k) {

this.linestyle(1);
this.moveTo(x1, y1);
this.lineTo(x2, y2);
};

// 从(0,0)到(100,100)画一条线
_root.createEmptyMovieClip("mc", 10);

mc.drawline(0, 0, 100, 100);
// 画螺旋线
// w、h为宽和高
// f控制线的长短,用弧度表示

Movieclip.prototype.drawhelix = function(w, h, f) {
for (var i = 0;
i<f; i += 0.05) {
this.lineTo(x=Math.sin(i)*i*w, y=Math.cos(i)*i*h);

this.linestyle(1);
}
};
// 以(100,100)为中心画螺旋线

_root.createEmptyMovieClip("luo", 1);
with (luo) {
drawhelix(5, 5,
13);
_x += 100;
_y += 100;
}
// 多功能函数,可画圆,椭圆,正多边形等
// n为边数

Movieclip.prototype.drawmany = function(w, h, n) {
f = 2*Math.PI;

for (var i = 0; i<=f/n*(n+1); i += f/n) {

this.lineTo(x=Math.sin(i)*w, y=Math.cos(i)*h);
this.linestyle(1);
}

};
// 画一正五边形
_root.createEmptyMovieClip("obian", 2);
with
(obian) {
drawmany(50, 50, 5);
_x += 250;
_y += 100;
//
5为多边形的边数,6.3为2pai
}
// 画一椭圆
_root.createEmptyMovieClip("tuo", 3);

with (tuo) {
drawmany(25, 50, 100);
_x += 400;
_y += 100;
}

// 圆
_root.createEmptyMovieClip("yuan", 4);
with (yuan) {

drawmany(50, 50, 100);
_x += 400;
_y += 300;
}
// 抛物线

Movieclip.prototype.drawparabola = function(l, r, k) {
for (var i = -l;
i<=r; i += 1) {
this.lineTo(x=i, y=k*i*i);
this.linestyle(1);
}

};
// 调用
_root.createEmptyMovieClip("parabola", 100);
with
(parabola) {
drawparabola(50, 50, 0.05);
_x += 200;
_y += 200;

// 顶点坐标
}
// 正弦线,余弦类似
Movieclip.prototype.drawsin = function(n,
k) {

for (var i = 0; i<=90*n; i += 1) {
this.lineTo(x=i,
y=k*Math.sin(i*Math.PI/180));
this.linestyle(1);
}
};

_root.createEmptyMovieClip("sin", 101);
with (sin) {
drawsin(4, 50);

_x += 200;
_y += 200;
// 顶点坐标
}
Movieclip.prototype.drawwave
= function(w, h) {
for (var i = 0; i<=6.3; i += 0.01) {

this.lineTo(x=w/Math.cos(i), y=h*Math.sin(i)/Math.cos(i));

this.linestyle(1);
}
};
_root.createEmptyMovieClip("wave", 105);

with (wave) {
drawwave(100, 100);
_x += 200;
_y += 200;
//
顶点坐标
}

㈦ 请教:C#怎样实现画笔功能

usingSystem.Drawing;
privatevoidButton1_Click(objectsender,EventArgse)
{
Brushb=newSolidBrush(Color.Red);
Graphicsg=this.CreateGraphics();
g.FillRectangle(b,50,50,200,200);//在(50,50)绘制宽200高200的红色矩形
}

上面代码请先在窗体添加一个Button1,然后双击它生成点击事件。


如满意,请点赞,谢谢。

㈧ 如何实现在屏幕上画画,就是屏幕画笔之类的。最好有代码

创建透明窗口及其应用--屏幕画笔
http://hi..com/qiujiejia/blog/item/5ec37482819e41af6c811991.html

㈨ 使用颜色画笔代码如下但没成功 CPen* pPenRed = new CPen pPenRed->CreatePen(PS_SOLID, 2, RGB(255,0,0))

没有包含头文件。
是不是忘加了include <stdafx.h>

㈩ 请java高手帮忙不程序,只要帮我在我的程序中加个改变画笔粗细和颜色的代码就行,情况紧急

public void paint(Graphics g) {
Stroke stroke=new BasicStroke(10.0f);//设置线宽为10.0
Graphics2D g2d = (Graphics2D) g;// 获取图形环境
g2d.setStroke(stroke);
g2d.draw(gp);// 绘制路径

}

改成这样的。快。好了,。
颜色的,你自己练练改。道理相同。

加入颜色的是这样的。

public void paint(Graphics g) {
Stroke stroke=new BasicStroke(10.0f);//设置线宽为3.0

Color c= new Color(100, 10, 10) ;//设置颜色R-G-B值 (褐色)

Graphics2D g2d = (Graphics2D) g;// 获取图形环境
g2d.setColor(c);
g2d.setStroke(stroke);

g2d.draw(gp);// 绘制路径

}

你就替换paint方法就可以了。别的不用改