实例介绍
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using HalconDotNet;
using One.Common;
namespace SetMarkModel
{
public partial class SetModelMarkForm : Form
{
HTuple handle;
HObject ho_A11bmp;
HTuple w;
HTuple h;
HObject LastDispImage;
HObject LastRegion=null;
string TestConfigFile = Application.StartupPath "\\Config.ini";
public SetModelMarkForm()
{
InitializeComponent();
HOperatorSet.OpenWindow(0, 0, pictureBox1.Width, pictureBox1.Height, pictureBox1.Handle, "", "", out handle);
}
public void pictureBox1_MouseWheel(object sender, MouseEventArgs e)
{
ImageScale(LastDispImage, e, LastRegion);
}
private void button1_Click(object sender, EventArgs e)
{
string filename = string.Empty;
OpenFileDialog openFileDialog = new OpenFileDialog();
if (openFileDialog.ShowDialog()==DialogResult.OK)
{
filename = openFileDialog.FileName;
}
Bitmap bitmap = new Bitmap(filename);
HImageConvertFromBitmap32(bitmap,out ho_A11bmp);
DisplayImage(ho_A11bmp);
}
private void HImageConvertFromBitmap32(Bitmap bmp, out HObject Himage)
{
HOperatorSet.GenEmptyObj(out Himage);
BitmapData bmpData = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadOnly, PixelFormat.Format32bppRgb);
Himage.Dispose();
try
{
HOperatorSet.GenImageInterleaved(out Himage, bmpData.Scan0, "bgrx", bmp.Width, bmp.Height, -1, "byte", bmp.Width, bmp.Height, 0, 0, -1, 0);
bmp.UnlockBits(bmpData);
bmp.Dispose();
}
catch (Exception ex)
{
Himage.Dispose();
}
}
private void DisplayImage(HObject hObject)
{
HOperatorSet.SetColor(handle, "green");
HOperatorSet.SetLineWidth(handle, 2);
// HOperatorSet.GenRectangle1(out ho_Rectangle1, 258.61, 1337.1, 3627.04, 4846.13);
//HOperatorSet.ReduceDomain(ho_A11bmp, ho_Rectangle1,out ho_ImageReduced);
HOperatorSet.GetImageSize(hObject, out w, out h);
HOperatorSet.SetPart(handle, 2, 2, h, w);
HOperatorSet.DispObj(hObject, handle);
LastDispImage = hObject;
label4.Text = trackBar3.Value.ToString();
label3.Text= trackBar4.Value.ToString();
}
public enum RoiType
{
Rectangle,Cir
}
public RoiType roiType;
private void DrawRoi(RoiType roiType,HObject image)
{
if (roiType==RoiType.Cir)
{
HOperatorSet.DrawCircle(handle, out HTuple row, out HTuple col, out HTuple r);
HOperatorSet.GenCircle(out HObject cir, row, col, r);
HOperatorSet.ReduceDomain(image,cir,out HObject cirimage);
HOperatorSet.ClearWindow(handle);
DisplayImage(cirimage);
}
else if (roiType==RoiType.Rectangle)
{
HOperatorSet.DrawRectangle1(handle, out HTuple row, out HTuple col, out HTuple row2,out HTuple col2);
HOperatorSet.GenRectangle1(out HObject rec, row, col, row2,col2);
HOperatorSet.ReduceDomain(image, rec, out HObject recimage);
HOperatorSet.ClearWindow(handle);
DisplayImage(recimage);
}
}
private void ImageScale(HObject NowImage, MouseEventArgs e, HObject region = null)
{
HTuple Zoom, Row, Col, Button;
HTuple Row0, Column0, Row00, Column00, Ht, Wt, r1, c1, r2, c2;
if (e.Delta > 0)
{
Zoom = 1.5;
}
else
{
Zoom = 0.5;
}
HOperatorSet.GetMposition(handle, out Row, out Col, out Button);
HOperatorSet.GetPart(handle, out Row0, out Column0, out Row00, out Column00);
Ht = Row00 - Row0;
Wt = Column00 - Column0;
if (Ht * Wt < 32000 * 32000 || Zoom == 1.5)//普通版halcon能处理的图像最大尺寸是32K*32K。如果无限缩小原图像,导致显示的图像超出限制,则会造成程序崩溃
{
r1 = (Row0 ((1 - (1.0 / Zoom)) * (Row - Row0)));
c1 = (Column0 ((1 - (1.0 / Zoom)) * (Col - Column0)));
r2 = r1 (Ht / Zoom);
c2 = c1 (Wt / Zoom);
HOperatorSet.SetPart(handle, r1, c1, r2, c2);
HOperatorSet.ClearWindow(handle);
try
{
HOperatorSet.DispObj(NowImage, handle);
LastDispImage = NowImage;
if (region!=null)
{
DisplayRegion(region);
}
}
catch (HalconException)
{
return;
}
}
}
private void button2_Click(object sender, EventArgs e)
{
if (ho_A11bmp==null)
{
return;
}
DrawRoi(roiType,ho_A11bmp);
}
private void MainForm_Load(object sender, EventArgs e)
{
roiType = RoiType.Cir;
radioButton1.Checked = true;
label1.Text = this.trackBar1.Value.ToString();
label2.Text = this.trackBar2.Value.ToString();
if (!File.Exists(TestConfigFile))
{
File.Create(TestConfigFile);
}
this.pictureBox1.MouseWheel = new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseWheel);
}
private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
if (radioButton1.Checked)
{
roiType = RoiType.Cir;
radioButton2.Checked = false;
}
else
{
roiType = RoiType.Rectangle;
radioButton1.Checked = false;
}
}
private void trackBar1_Scroll(object sender, EventArgs e)
{
label1.Text = this.trackBar1.Value.ToString();
SelectRegions(LastDispImage, this.trackBar1.Value, this.trackBar2.Value);
}
private void DisplayRegion(HObject region)
{
HOperatorSet.DispObj(region,handle);
LastRegion = region;
}
/// <summary>
/// 阈值选择显示
/// </summary>
/// <param name="LowThreold">最低阈值</param>
/// <param name="HighThresold">最高阈值</param>
private void SelectRegions(HObject image,int LowThreold, int HighThresold)
{
if (LowThreold > HighThresold)
{
return;
}
HOperatorSet.ClearWindow(handle);
HOperatorSet.DispObj(image,handle);
LastDispImage = image;
//HOperatorSet.GenEmptyObj(out ho_Region);
try
{
HOperatorSet.Threshold(image, out HObject ho_OpenRegion, LowThreold, HighThresold);
DisplayRegion(ho_OpenRegion);
LastRegion = ho_OpenRegion;
// HOperatorSet.OpeningRectangle1(ho_OpenRegion, out ho_Region, 10, 250);
}
catch (HalconException)
{
return;
}
HOperatorSet.SetColor(handle, "green");
//HOperatorSet.DispObj(ho_Region, handle);
}
HObject FillUpRegion;
/// <summary>
/// 面积选择显示
/// </summary>
/// <param name="LowArea">最小面积</param>
/// <param name="HighArea">最大面积</param>
private void SelectArea(int LowArea, int HighArea)
{
HOperatorSet.AreaCenter(LastDispImage, out HTuple arear, out HTuple row, out HTuple hTuple);
trackBar3.Maximum = arear.I;
trackBar4.Maximum = arear.I;
//trackBar3.Value = 0;
trackBar4.Value = trackBar4.Maximum;
if (LowArea > HighArea)
{
return;
}
//HOperatorSet.CloseWindow(handle);
//HOperatorSet.OpenWindow(0, 0, pictureBox1.Width, pictureBox1.Height, pictureBox1.Handle, "", "", out handle);
HOperatorSet.ClearWindow(handle);
HOperatorSet.DispObj(LastDispImage, handle);
//HOperatorSet.DispObj(ho_Regions, handle);
// HOperatorSet.GenEmptyObj(out ho_SelectedRegions);
//HOperatorSet.GenEmptyObj(out ho_ConnectedRegions);
// ho_ConnectedRegions.Dispose();
HOperatorSet.Connection(LastRegion, out HObject ho_ConnectedRegions);
//ho_SelectedRegions.Dispose();
try
{
HOperatorSet.SelectShape(ho_ConnectedRegions, out HObject ho_SelectedRegions, "area",
"and", LowArea, HighArea);
//LastRegion = ho_SelectedRegions;
HOperatorSet.FillUp(ho_SelectedRegions, out FillUpRegion);
//LastRegion = FillUpRegion;
HOperatorSet.ClearWindow(handle);
HOperatorSet.SetColor(handle, "red");
HOperatorSet.DispObj(LastDispImage, handle);
HOperatorSet.DispObj(FillUpRegion, handle);
//LastRegion = FillUpRegion;
}
catch (Exception)
{
return;
}
}
private void trackBar2_Scroll(object sender, EventArgs e)
{
label2.Text = this.trackBar2.Value.ToString();
SelectRegions(LastDispImage,trackBar1.Value,trackBar2.Value);
}
private void trackBar3_Scroll(object sender, EventArgs e)
{
//HOperatorSet.GetImageSize(LastDispImage, out w, out h);
label4.Text = trackBar3.Value.ToString();
label3.Text = trackBar4.Value.ToString();
SelectArea(trackBar3.Value,trackBar4.Value);
}
HObject ModelPic;
HTuple ModelID;
string FileName = string.Empty;
private void SaveFileName()
{
FileFunc.WriteIniData(TestConfigFile, "FileSet", "取料模板保存路径", FileName);
}
private string ReadFileName
{
get { return FileFunc.ReadIniData(TestConfigFile, "FileSet", "取料模板保存路径"); }
}
private void button3_Click(object sender, EventArgs e)
{
HOperatorSet.ReduceDomain(ho_A11bmp,LastRegion,out ModelPic);
HOperatorSet.CreateShapeModel(ModelPic, "auto", (new HTuple(0)).TupleRad(), (new HTuple(360)).TupleRad(), "auto", "auto", "use_polarity", "auto", "auto", out ModelID);
//HOperatorSet.CreateNccModel(ModelPic, "auto", (new HTuple(0)).TupleRad() , (new HTuple(360)).TupleRad(), "auto", "ignore_global_polarity", out ModelID);
SaveFileDialog saveImageDialog = new SaveFileDialog();
saveImageDialog.Filter = "Model Files (*.ofm;*.ofm)|*.ofm;*.ofm";
//openImageDialog.Multiselect = false;
if (saveImageDialog.ShowDialog() == DialogResult.OK)
{
FileName = saveImageDialog.FileName;
SaveFileName();
HOperatorSet.WriteObject(LastRegion, saveImageDialog.FileName);
HOperatorSet.WriteShapeModel(ModelID, saveImageDialog.FileName);
}
else
{
return;
}
}
private void button4_Click(object sender, EventArgs e)
{
HOperatorSet.ReadShapeModel(ReadFileName,out HTuple ModelId);
HOperatorSet.ReadObject(out HObject hregion,ReadFileName ".hobj");
HOperatorSet.FindShapeModel(ho_A11bmp, ModelId, new HTuple(0).TupleRad(), new HTuple(360).TupleRad(), 0.2, 1, 0.5,
"none", 0, 1, out HTuple out_Row1, out HTuple out_Column1, out HTuple out_Angle, out HTuple out_Score);
HOperatorSet.AreaCenter(hregion,out HTuple area,out HTuple row,out HTuple col);
HOperatorSet.VectorAngleToRigid(row,col,0,out_Row1,out_Column1,out_Angle,out HTuple home2d);
HOperatorSet.AffineTransRegion(hregion,out HObject regionaffine,home2d, "nearest_neighbor");
HOperatorSet.SetDraw(handle,"margin");
HOperatorSet.SetLineWidth(handle, 2);
HOperatorSet.DispObj(regionaffine,handle);
LastRegion = regionaffine;
}
private void button5_Click(object sender, EventArgs e)
{
LastRegion = FillUpRegion;
}
}
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using HalconDotNet;
using One.Common;
namespace SetMarkModel
{
public partial class SetModelMarkForm : Form
{
HTuple handle;
HObject ho_A11bmp;
HTuple w;
HTuple h;
HObject LastDispImage;
HObject LastRegion=null;
string TestConfigFile = Application.StartupPath "\\Config.ini";
public SetModelMarkForm()
{
InitializeComponent();
HOperatorSet.OpenWindow(0, 0, pictureBox1.Width, pictureBox1.Height, pictureBox1.Handle, "", "", out handle);
}
public void pictureBox1_MouseWheel(object sender, MouseEventArgs e)
{
ImageScale(LastDispImage, e, LastRegion);
}
private void button1_Click(object sender, EventArgs e)
{
string filename = string.Empty;
OpenFileDialog openFileDialog = new OpenFileDialog();
if (openFileDialog.ShowDialog()==DialogResult.OK)
{
filename = openFileDialog.FileName;
}
Bitmap bitmap = new Bitmap(filename);
HImageConvertFromBitmap32(bitmap,out ho_A11bmp);
DisplayImage(ho_A11bmp);
}
private void HImageConvertFromBitmap32(Bitmap bmp, out HObject Himage)
{
HOperatorSet.GenEmptyObj(out Himage);
BitmapData bmpData = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadOnly, PixelFormat.Format32bppRgb);
Himage.Dispose();
try
{
HOperatorSet.GenImageInterleaved(out Himage, bmpData.Scan0, "bgrx", bmp.Width, bmp.Height, -1, "byte", bmp.Width, bmp.Height, 0, 0, -1, 0);
bmp.UnlockBits(bmpData);
bmp.Dispose();
}
catch (Exception ex)
{
Himage.Dispose();
}
}
private void DisplayImage(HObject hObject)
{
HOperatorSet.SetColor(handle, "green");
HOperatorSet.SetLineWidth(handle, 2);
// HOperatorSet.GenRectangle1(out ho_Rectangle1, 258.61, 1337.1, 3627.04, 4846.13);
//HOperatorSet.ReduceDomain(ho_A11bmp, ho_Rectangle1,out ho_ImageReduced);
HOperatorSet.GetImageSize(hObject, out w, out h);
HOperatorSet.SetPart(handle, 2, 2, h, w);
HOperatorSet.DispObj(hObject, handle);
LastDispImage = hObject;
label4.Text = trackBar3.Value.ToString();
label3.Text= trackBar4.Value.ToString();
}
public enum RoiType
{
Rectangle,Cir
}
public RoiType roiType;
private void DrawRoi(RoiType roiType,HObject image)
{
if (roiType==RoiType.Cir)
{
HOperatorSet.DrawCircle(handle, out HTuple row, out HTuple col, out HTuple r);
HOperatorSet.GenCircle(out HObject cir, row, col, r);
HOperatorSet.ReduceDomain(image,cir,out HObject cirimage);
HOperatorSet.ClearWindow(handle);
DisplayImage(cirimage);
}
else if (roiType==RoiType.Rectangle)
{
HOperatorSet.DrawRectangle1(handle, out HTuple row, out HTuple col, out HTuple row2,out HTuple col2);
HOperatorSet.GenRectangle1(out HObject rec, row, col, row2,col2);
HOperatorSet.ReduceDomain(image, rec, out HObject recimage);
HOperatorSet.ClearWindow(handle);
DisplayImage(recimage);
}
}
private void ImageScale(HObject NowImage, MouseEventArgs e, HObject region = null)
{
HTuple Zoom, Row, Col, Button;
HTuple Row0, Column0, Row00, Column00, Ht, Wt, r1, c1, r2, c2;
if (e.Delta > 0)
{
Zoom = 1.5;
}
else
{
Zoom = 0.5;
}
HOperatorSet.GetMposition(handle, out Row, out Col, out Button);
HOperatorSet.GetPart(handle, out Row0, out Column0, out Row00, out Column00);
Ht = Row00 - Row0;
Wt = Column00 - Column0;
if (Ht * Wt < 32000 * 32000 || Zoom == 1.5)//普通版halcon能处理的图像最大尺寸是32K*32K。如果无限缩小原图像,导致显示的图像超出限制,则会造成程序崩溃
{
r1 = (Row0 ((1 - (1.0 / Zoom)) * (Row - Row0)));
c1 = (Column0 ((1 - (1.0 / Zoom)) * (Col - Column0)));
r2 = r1 (Ht / Zoom);
c2 = c1 (Wt / Zoom);
HOperatorSet.SetPart(handle, r1, c1, r2, c2);
HOperatorSet.ClearWindow(handle);
try
{
HOperatorSet.DispObj(NowImage, handle);
LastDispImage = NowImage;
if (region!=null)
{
DisplayRegion(region);
}
}
catch (HalconException)
{
return;
}
}
}
private void button2_Click(object sender, EventArgs e)
{
if (ho_A11bmp==null)
{
return;
}
DrawRoi(roiType,ho_A11bmp);
}
private void MainForm_Load(object sender, EventArgs e)
{
roiType = RoiType.Cir;
radioButton1.Checked = true;
label1.Text = this.trackBar1.Value.ToString();
label2.Text = this.trackBar2.Value.ToString();
if (!File.Exists(TestConfigFile))
{
File.Create(TestConfigFile);
}
this.pictureBox1.MouseWheel = new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseWheel);
}
private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
if (radioButton1.Checked)
{
roiType = RoiType.Cir;
radioButton2.Checked = false;
}
else
{
roiType = RoiType.Rectangle;
radioButton1.Checked = false;
}
}
private void trackBar1_Scroll(object sender, EventArgs e)
{
label1.Text = this.trackBar1.Value.ToString();
SelectRegions(LastDispImage, this.trackBar1.Value, this.trackBar2.Value);
}
private void DisplayRegion(HObject region)
{
HOperatorSet.DispObj(region,handle);
LastRegion = region;
}
/// <summary>
/// 阈值选择显示
/// </summary>
/// <param name="LowThreold">最低阈值</param>
/// <param name="HighThresold">最高阈值</param>
private void SelectRegions(HObject image,int LowThreold, int HighThresold)
{
if (LowThreold > HighThresold)
{
return;
}
HOperatorSet.ClearWindow(handle);
HOperatorSet.DispObj(image,handle);
LastDispImage = image;
//HOperatorSet.GenEmptyObj(out ho_Region);
try
{
HOperatorSet.Threshold(image, out HObject ho_OpenRegion, LowThreold, HighThresold);
DisplayRegion(ho_OpenRegion);
LastRegion = ho_OpenRegion;
// HOperatorSet.OpeningRectangle1(ho_OpenRegion, out ho_Region, 10, 250);
}
catch (HalconException)
{
return;
}
HOperatorSet.SetColor(handle, "green");
//HOperatorSet.DispObj(ho_Region, handle);
}
HObject FillUpRegion;
/// <summary>
/// 面积选择显示
/// </summary>
/// <param name="LowArea">最小面积</param>
/// <param name="HighArea">最大面积</param>
private void SelectArea(int LowArea, int HighArea)
{
HOperatorSet.AreaCenter(LastDispImage, out HTuple arear, out HTuple row, out HTuple hTuple);
trackBar3.Maximum = arear.I;
trackBar4.Maximum = arear.I;
//trackBar3.Value = 0;
trackBar4.Value = trackBar4.Maximum;
if (LowArea > HighArea)
{
return;
}
//HOperatorSet.CloseWindow(handle);
//HOperatorSet.OpenWindow(0, 0, pictureBox1.Width, pictureBox1.Height, pictureBox1.Handle, "", "", out handle);
HOperatorSet.ClearWindow(handle);
HOperatorSet.DispObj(LastDispImage, handle);
//HOperatorSet.DispObj(ho_Regions, handle);
// HOperatorSet.GenEmptyObj(out ho_SelectedRegions);
//HOperatorSet.GenEmptyObj(out ho_ConnectedRegions);
// ho_ConnectedRegions.Dispose();
HOperatorSet.Connection(LastRegion, out HObject ho_ConnectedRegions);
//ho_SelectedRegions.Dispose();
try
{
HOperatorSet.SelectShape(ho_ConnectedRegions, out HObject ho_SelectedRegions, "area",
"and", LowArea, HighArea);
//LastRegion = ho_SelectedRegions;
HOperatorSet.FillUp(ho_SelectedRegions, out FillUpRegion);
//LastRegion = FillUpRegion;
HOperatorSet.ClearWindow(handle);
HOperatorSet.SetColor(handle, "red");
HOperatorSet.DispObj(LastDispImage, handle);
HOperatorSet.DispObj(FillUpRegion, handle);
//LastRegion = FillUpRegion;
}
catch (Exception)
{
return;
}
}
private void trackBar2_Scroll(object sender, EventArgs e)
{
label2.Text = this.trackBar2.Value.ToString();
SelectRegions(LastDispImage,trackBar1.Value,trackBar2.Value);
}
private void trackBar3_Scroll(object sender, EventArgs e)
{
//HOperatorSet.GetImageSize(LastDispImage, out w, out h);
label4.Text = trackBar3.Value.ToString();
label3.Text = trackBar4.Value.ToString();
SelectArea(trackBar3.Value,trackBar4.Value);
}
HObject ModelPic;
HTuple ModelID;
string FileName = string.Empty;
private void SaveFileName()
{
FileFunc.WriteIniData(TestConfigFile, "FileSet", "取料模板保存路径", FileName);
}
private string ReadFileName
{
get { return FileFunc.ReadIniData(TestConfigFile, "FileSet", "取料模板保存路径"); }
}
private void button3_Click(object sender, EventArgs e)
{
HOperatorSet.ReduceDomain(ho_A11bmp,LastRegion,out ModelPic);
HOperatorSet.CreateShapeModel(ModelPic, "auto", (new HTuple(0)).TupleRad(), (new HTuple(360)).TupleRad(), "auto", "auto", "use_polarity", "auto", "auto", out ModelID);
//HOperatorSet.CreateNccModel(ModelPic, "auto", (new HTuple(0)).TupleRad() , (new HTuple(360)).TupleRad(), "auto", "ignore_global_polarity", out ModelID);
SaveFileDialog saveImageDialog = new SaveFileDialog();
saveImageDialog.Filter = "Model Files (*.ofm;*.ofm)|*.ofm;*.ofm";
//openImageDialog.Multiselect = false;
if (saveImageDialog.ShowDialog() == DialogResult.OK)
{
FileName = saveImageDialog.FileName;
SaveFileName();
HOperatorSet.WriteObject(LastRegion, saveImageDialog.FileName);
HOperatorSet.WriteShapeModel(ModelID, saveImageDialog.FileName);
}
else
{
return;
}
}
private void button4_Click(object sender, EventArgs e)
{
HOperatorSet.ReadShapeModel(ReadFileName,out HTuple ModelId);
HOperatorSet.ReadObject(out HObject hregion,ReadFileName ".hobj");
HOperatorSet.FindShapeModel(ho_A11bmp, ModelId, new HTuple(0).TupleRad(), new HTuple(360).TupleRad(), 0.2, 1, 0.5,
"none", 0, 1, out HTuple out_Row1, out HTuple out_Column1, out HTuple out_Angle, out HTuple out_Score);
HOperatorSet.AreaCenter(hregion,out HTuple area,out HTuple row,out HTuple col);
HOperatorSet.VectorAngleToRigid(row,col,0,out_Row1,out_Column1,out_Angle,out HTuple home2d);
HOperatorSet.AffineTransRegion(hregion,out HObject regionaffine,home2d, "nearest_neighbor");
HOperatorSet.SetDraw(handle,"margin");
HOperatorSet.SetLineWidth(handle, 2);
HOperatorSet.DispObj(regionaffine,handle);
LastRegion = regionaffine;
}
private void button5_Click(object sender, EventArgs e)
{
LastRegion = FillUpRegion;
}
}
}
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论