怎么样在一个已经有的图片上绘图。

Nirvanaxumm 2005-07-18 09:56:28
如题,在一个已知的图片上加几个点。
...全文
244 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Nirvanaxumm 2005-07-18
  • 打赏
  • 举报
回复
有VB的例子吗?
tigerwen01 2005-07-18
  • 打赏
  • 举报
回复
protected override void OnPaint(PaintEventArgs e )
{
Graphics gxOff; //屏幕外的图像

if (m_bmpOffscreen == null) //要双缓冲的位图
{
m_bmpOffscreen = new Bitmap(ClientSize.Width, ClientSize.Height);
}

gxOff = Graphics.FromImage(m_bmpOffscreen);

gxOff.Clear(this.BackColor);
//绘制一些位图
gxOff.DrawImage(bmpParent, 0, 0, bmpRect, GraphicsUnit.Pixel);

//边界矩形
Rectangle rc = this.ClientRectangle;
rc.Width--;
rc.Height--;

//绘制边界
gxOff.DrawRectangle(new Pen(Color.Black), rc);
//从内存位图绘制
e.Graphics.DrawImage(m_bmpOffscreen, 0, 0);

base.OnPaint( e );
}

upshania 2005-07-18
  • 打赏
  • 举报
回复
namespace Wmj
{
using System;
using System.Drawing;
using System.Web.UI;

public class MyTempImage : Page
{
public string CreateImage()
{
string str=DateTime.Now.ToString();
Bitmap image=new Bitmap(200,30);
Graphics g=Graphics.FromImage(image);
string thefullname=Server.MapPath("/")+"\\nowtime.gif";
g.Clear(Color.White);
g.DrawString(str,new Font("Courier New", 10),new SolidBrush(Color.Red),20,5);
//Graphics 类还有很多绘图方法可以绘制 直线、曲线、圆等等
image.Save(thefullname,System.Drawing.Imaging.ImageFormat.Gif);
return "/nowtime.gif";
}
}
}
///////////////////////////////////////////
<%@page language="C#"%>
<%@Import namespace="Wmj"%>
<script language="C#" runat="server">
void Page_Load(object sender,EventArgs e)
{
MyTempImage myTempImage=new MyTempImage();
img1.Src=myTempImage.CreateImage();
}
</script>
<html>
<head>
<!--每10秒自动刷新-->
<meta http-equiv="refresh" content="10">
</head>
<body>
<form runat="server">
<input type="button" value="手动刷新" onclick="location.reload()">
<img id="img1" runat="server"/>
</form>
</body>
</html>
JzeroBiao 2005-07-18
  • 打赏
  • 举报
回复
System.Drawing.BitMap oMap = new System.Drawing.BitMap(@"c:\1.bmp");
之后就学习了..哈哈...
yxtyxt3311 2005-07-18
  • 打赏
  • 举报
回复
使用ImageFormat,DrawString,查查MSDN,.net自带的,很好用的....
xu770 2005-07-18
  • 打赏
  • 举报
回复
/// <summary>
/// 生成4位随机数的图片
/// </summary>
/// <returns>随机数和图片html标签</returns>
public static string[] GetValidateImage()
{
string[] ValidateImage=new string[2];
string strContent="";
int intRan;
Bitmap img=new Bitmap(50,20);
System.Drawing.Graphics g;
g = Graphics.FromImage(img);
g.Clear(Color.WhiteSmoke);
System.Random ran=new Random();
for (int i=0;i<4;i++)
{
intRan = ran.Next(10);
strContent += intRan.ToString();
g.DrawString(intRan.ToString(),new Font("Arial",10),new SolidBrush(Color.FromArgb(0,0,0)),i*10+1+ran.Next(4),ran.Next(5));
}
img.Save(System.Web.HttpContext.Current.Server.MapPath("a.jpg"),System.Drawing.Imaging.ImageFormat.Jpeg);
ValidateImage[0]=strContent;
ValidateImage[1]="<img src=\"a.jpg\">";
return ValidateImage;
}
cdjjh 2005-07-18
  • 打赏
  • 举报
回复
给你一个完整的例子:需要两个页面相配合,Painter.aspx需要调用PaintImage.aspx.

Painter.aspx的代码:
<%@ Import Namespace="System.Drawing" %>

<Script Runat="Server">

Sub Page_Load
If Not IsPostBack Then
ibtnCanvas.ImageUrl = "PaintImage.aspx"
lstColor.DataSource = System.Enum.GetValues( GetType( KnownColor ) )
lstColor.SelectedIndex = 0
lstAction.SelectedIndex = 0
DataBind()
End If
End Sub

Sub ibtnCanvas_Click( s As Object, e As ImageClickEventArgs )
Dim strQueryString As String

strQueryString &= "a=" & lstAction.SelectedItem.Text
strQueryString &= "&color=" & lstColor.SelectedItem.Text
strQueryString &= "&x=" & e.X
strQueryString &= "&y=" & e.y
ibtnCanvas.ImageUrl = "PaintImage.aspx?" & strQueryString
End Sub

Sub btnClear_Click( s As Object, e As EventArgs )
Session( "Canvas" ) = Nothing
ibtnCanvas.ImageURL = "PaintImage.aspx"
End Sub

</Script>

<html>
<head><title>Painter.aspx</title></head>
<body>
<form Runat="Server">

<table width="100%">
<tr><td valign="top">

<h3>Draw:</h3>
<asp:ListBox
ID="lstAction"
Runat="Server" >
<asp:ListItem Text="SetPixel" />
<asp:ListItem Text="DrawLine" />
<asp:ListItem Text="DrawRectangle" />
<asp:ListItem Text="FillRectangle" />
</asp:ListBox>

<h3>Color:</h3>
<asp:ListBox
id="lstColor"
Runat="Server" />
<p>
<asp:Button
id="btnClear"
Text="Clear All"
OnClick="btnClear_Click"
Runat="Server" />

</td><td valign="top">
<asp:ImageButton
id="ibtnCanvas"
OnClick="ibtnCanvas_Click"
Runat="Server" />

</td></tr>
</table>

</form>
</body>
</html>

PaintImage.aspx的代码:
<%@ Page ContentType="image/gif" %>
<%@ Import namespace="System.Drawing" %>
<%@ Import namespace="System.Drawing.Imaging" %>

<Script Runat="Server">

Sub Page_Load
Dim objBitmap As Bitmap
Dim objGraphics As Graphics
Dim objPen As Pen
Dim strAction As String
Dim strColor As String
Dim objColor As Color
Dim intOldX, intOldY As Integer
Dim intNewX, intNewY As Integer

' Create or Retrieve Bitmap
objBitmap = Session( "Canvas" )
If objBitmap Is Nothing Then
objBitmap = New Bitmap( 600, 400, PixelFormat.Format32bppARGB )
End If
objGraphics = Graphics.FromImage( objBitmap )

' Get Action, Color, and Coordinates
strAction = Request.QueryString( "a" )
strColor = Request.QueryString( "color" )
intNewX = Request.QueryString( "x" )
intNewY = Request.QueryString( "y" )
intOldX = Session( "OldX" )
intOldY = Session( "OldY" )

' Create Pen
If strColor <> Nothing Then
objColor = Color.FromName( strColor )
objPen = New Pen( objColor )
Else
objColor = Color.White
objPen = New Pen( objColor )
End If

' Perform Action
Select Case strAction
Case "SetPixel"
objBitMap.SetPixel( intNewX, intNewY, objColor )
Case "DrawLine"
If intOldX <> Nothing Then
objGraphics.DrawLine( objPen, intOldX, intOldY, intNewX, intNewY )
End If
Case "DrawLine"
If intOldX <> Nothing Then
objGraphics.DrawLine( objPen, intOldX, intOldY, intNewX, intNewY )
End If
Case "DrawRectangle"
If intOldX <> Nothing Then
objGraphics.DrawRectangle( objPen, intOldX, intOldY, intNewX - intOldX, intNewY - intOldY )
End If
Case "FillRectangle"
If intOldX <> Nothing Then
objGraphics.FillRectangle( New SolidBrush( objColor ), intOldX, intOldY, intNewX - intOldX, intNewY - intOldY )
End If
End Select

' Display the Bitmap
objBitmap.Save( Response.OutputStream, ImageFormat.GIF)

' Save the Bitmap
Session( "Canvas" ) = objBitMap

If Session( "OldX" ) <> Nothing Then
Session( "OldX" ) = Nothing
Session( "OldY" ) = Nothing
Else
Session( "OldX" ) = intNewX
Session( "OldY" ) = intNewY
End If
End Sub

</Script>
Nirvanaxumm 2005-07-18
  • 打赏
  • 举报
回复
up

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧