看到大家对计算机绘图很感兴趣,感到很开心,也来开源一个DSCoolLabel彩色Label

dylike 2012-07-30 07:52:44
实际上,做GDI+的不外乎两种目的:1纯粹兴趣,不为客户使用 2因客户使用而做。
看到几个开源的绘图源码,感觉到这一块不再孤独了,也来开源一个吧,这次开源的是DSCoolLabel,彩色文字类。因为本人没有受过专业英语教学,代码中单词可能有些乱用的情况,请谅解!

先看效果图:


部分场合使用:



当然,可能这些东西并不实用,纯粹是兴趣所做,勿以实用性来判断其技术含量,本身也无任何技术含量。

源码如下:C#
[code=C#]using Microsoft.VisualBasic;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Drawing.Imaging;
using System.Drawing;
public class DSCoolLabel
{
#region "属性"
private byte[] Glob_Byts;
private int bpStra;
public Color TextNomalColor { get; set; }
/// <summary>
/// 存储图像列表(最终输出为16X16像素)
/// </summary>
/// <remarks></remarks>
public List<Bitmap> ImgList = new List<Bitmap>();
/// <summary>
/// 绘制文字描边
/// </summary>
/// <value></value>
/// <returns></returns>
/// <remarks></remarks>
public bool DrawTextOutLine { get; set; }
/// <summary>
/// 文字间距
/// </summary>
/// <value></value>
/// <returns></returns>
/// <remarks></remarks>
public int CharWidth { get; set; }
/// <summary>
/// 文字行距
/// </summary>
/// <value></value>
/// <returns></returns>
/// <remarks></remarks>
public int CharLine { get; set; }
/// <summary>
/// 文本显示质量
/// </summary>
/// <value></value>
/// <returns></returns>
/// <remarks></remarks>
public Drawing.Text.TextRenderingHint TextRenderHint { get; set; }
private string _Text;
private List<ColorCharItem> _C = new List<ColorCharItem>();
private string _OutputText;
/// <summary>
/// 是否绘制投影
/// </summary>
/// <remarks></remarks>
public bool DrawShadow = false;
/// <summary>
/// 去除颜色代码后的字串
/// </summary>
/// <value></value>
/// <returns></returns>
/// <remarks></remarks>
public string OutputText {
get { return _OutputText; }
}
/// <summary>
/// 包含颜色代码的字串
/// </summary>
/// <value></value>
/// <returns></returns>
/// <remarks></remarks>
...全文
334 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
pig357 2012-08-18
  • 打赏
  • 举报
回复
做的很漂亮啊,O(∩_∩)O谢谢LZ
BoweirrKing 2012-08-17
  • 打赏
  • 举报
回复
果断收藏!!!!!
BoweirrKing 2012-08-17
  • 打赏
  • 举报
回复
果断收藏!
Anod 2012-08-13
  • 打赏
  • 举报
回复
private PointF GetTextRegions(string T)
{
try {
using (System.Windows.Forms.Control C = new System.Windows.Forms.Control()) {
using (Graphics G = C.CreateGraphics()) {
return G.MeasureString(T, TextFont, 0).ToPointF();
}
}
} catch {
return null;
}
}

值类型可以返回null? .net 2005报错啊
dylike 2012-07-30
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

软件细节能下这样的功夫,何愁回款有周折,人才啊。
[/Quote]

过奖我,我只是比较习惯于自己去画需要的素材而已,一个小图PS画几个小时是正常的。
lizhibin11 2012-07-30
  • 打赏
  • 举报
回复
软件细节能下这样的功夫,何愁回款有周折,人才啊。
dylike 2012-07-30
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

晕你
你就不能选择下[code=C#]吗?
[/Quote]

帖子内容太长,没办法。。。
SocketUpEx 2012-07-30
  • 打赏
  • 举报
回复
晕你
你就不能选择下[code=C#]吗?

lizhibin11 2012-07-30
  • 打赏
  • 举报
回复
赏心悦目啊,实在佩服楼主。
dylike 2012-07-30
  • 打赏
  • 举报
回复
包含色彩代码的文字段示例:
http://static.sdg-china.com/woool/pic/woool_act/201110_school/items/gold_zhuan.gif|http://static.sdg-china.com/woool/pic/woool_act/201110_school/items/wcloth10.gif<<>><255,255,255,b>欢迎使用DS消息面板。

<255,000,000,b>[群内公告]<255,255,000>本群征聘美女管理,有意者请到<000,255,000>群中NPC群主处<255,255,000>报名!并可领取虚拟
<255,128,000><IMG>100000金币<255,255,000>
<050,255,255><IMG>管理高级套装<255,255,000>

<255,000,000,b>[群内公告]<255,255,000>欢迎新朋友来到<000,255,000,b>电脑软件学习交流群<000,200,000,b>145428539<255,255,000>。

<255,255,100,b>[群内福利]
<255,000,000,b>QQ会员特权试用卡兑换码:
<255,255,255>AEDVLAAEXvumtJnd
AEDVLAAEXvnaHMSW
AEDVLAAEZVrVMTQa
AEDVLAAETVrBDjhd
AEDVLAAEXvVDZpHE
AEDVLAAEZVYdPmEy
AEDVLAAERwwYZUst

<255,000,000,b>[群内公告]<000,255,000>本群拟推出群成员等级功能,以开启DS消息面板时间长短来累加经验值。等级越高者,威望越高,将在新版DS消息面板成员排行榜列出。


<000,255,255>更多群内福利不断更新!


<255,000,000,b>[群内公告]<000,255,000>本群管理员请注意:为确保DS消息面板等本群扩展软件的正常使用,但凡加群成员是空昵称,管理员有权修改其群内昵称(至少一个字符以上)。


<255,000,000,b>[版本更新]<255,255,255>应群内优秀成员建议,本次消息面板更新如下:
1 支持面板最小化(最小化至屏幕顶部)。
2 扩大面板缩放最大尺寸到800X600。
3 插件栏渐显隐藏。
4 面板支持位置及大小记忆。
<255,255,000>最新版本消息面板请到群共享内下载。
dylike 2012-07-30
  • 打赏
  • 举报
回复
if (TextRect.Width - SizeWidth - 2 - A < 0) {
SizeWidth = 0;
SizeHeight += ImgHeightLine;
}
G.DrawImage(ImgList[K], new Rectangle(SizeWidth + 2, SizeHeight, A, B), new Rectangle(0, 0, A, B), GraphicsUnit.Pixel);
K += 1;
ImgHeightLine = (B > ImgHeightLine ? B - Sz.Y : ImgHeightLine);
SizeWidth += A + 2;
I += 5;
}
} catch {
}
}
}
try {
Sz = GetTextRegions(CC.CharString.Substring(I, 1));
if (DrawTextOutLine == true) {
G.DrawString(CC.CharString.Substring(I, 1), CC.Font, new SolidBrush(TextOutLineColor), new Rectangle(SizeWidth - 1, SizeHeight - 1 + 4, Sz.X, Sz.Y), StringFormat);
G.DrawString(CC.CharString.Substring(I, 1), CC.Font, new SolidBrush(TextOutLineColor), new Rectangle(SizeWidth - 1, SizeHeight + 1 + 4, Sz.X, Sz.Y), StringFormat);
G.DrawString(CC.CharString.Substring(I, 1), CC.Font, new SolidBrush(TextOutLineColor), new Rectangle(SizeWidth - 1, SizeHeight + 4, Sz.X, Sz.Y), StringFormat);
G.DrawString(CC.CharString.Substring(I, 1), CC.Font, new SolidBrush(TextOutLineColor), new Rectangle(SizeWidth + 1, SizeHeight - 1 + 4, Sz.X, Sz.Y), StringFormat);
G.DrawString(CC.CharString.Substring(I, 1), CC.Font, new SolidBrush(TextOutLineColor), new Rectangle(SizeWidth, SizeHeight - 1 + 4, Sz.X, Sz.Y), StringFormat);
G.DrawString(CC.CharString.Substring(I, 1), CC.Font, new SolidBrush(TextOutLineColor), new Rectangle(SizeWidth + 1, SizeHeight + 1 + 4, Sz.X, Sz.Y), StringFormat);
G.DrawString(CC.CharString.Substring(I, 1), CC.Font, new SolidBrush(TextOutLineColor), new Rectangle(SizeWidth, SizeHeight + 1 + 4, Sz.X, Sz.Y), StringFormat);
G.DrawString(CC.CharString.Substring(I, 1), CC.Font, new SolidBrush(TextOutLineColor), new Rectangle(SizeWidth + 1, SizeHeight + 4, Sz.X, Sz.Y), StringFormat);
}
//--
G.DrawString(CC.CharString.Substring(I, 1), CC.Font, new SolidBrush(CC.Color), new Rectangle(SizeWidth, SizeHeight + 4, Sz.X, Sz.Y), StringFormat);
SizeWidth += (Sz.X <= 4 ? 4 : Sz.X - 4) + CharWidth;
if (SizeWidth + Sz.X >= TextRect.Width - 1) {
N += 1;
SizeHeight += Sz.Y + CharLine + ImgHeightLine;
SizeWidth = 0;
ImgHeightLine = 0;
}
} catch {
}
}
}
}
SSz.Height = SizeHeight + CharLine * (N + 1) - (CharLine * N - Sz.Y);
}
OutBitmap = OutBitmap.Clone(new Rectangle(0, 0, SSz.Width, SSz.Height + 10), PixelFormat.Format32bppArgb);
if (DrawShadow == true) {
OutBitmap = SDrawShadow(OutBitmap);
}
} catch (Exception ex) {
Console.WriteLine("DrawError:" + ex.Message);
}
}
private void LoadStrings()
{
_C.Clear();
try {
int T = _Text.Length;
for (int I = _Text.Length - 1; I >= 0; I += -1) {
if (I <= _Text.Length - 13 && Text.Substring(I, 13) // ERROR: Unknown binary operator Like
) {
ColorCharItem L = new ColorCharItem();
string[] SP = _Text.Substring(I, 13).Split(",");
L.Color = Color.FromArgb(255, SP[0].Replace("<", ""), SP[1], SP[2].Replace(">", ""));
L.CharString = _Text.Substring(I + 13, T - I - 13).Replace(Strings.Chr(10), "");
L.Font = TextFont;
_C.Add(L);
T = I;
} else if (I <= _Text.Length - 15 && Text.Substring(I, 15) // ERROR: Unknown binary operator Like
) {
ColorCharItem L = new ColorCharItem();
string[] SP = _Text.Substring(I, 12).Split(",");
L.Color = Color.FromArgb(255, SP[0].Replace("<", ""), SP[1], SP[2]);
L.CharString = _Text.Substring(I + 15, T - I - 15).Replace(Strings.Chr(10), "");
L.Font = new Font(TextFont.Name, TextFont.Size, FontStyle.Bold, GraphicsUnit.Point);
_C.Add(L);
T = I;
} else if (I <= _Text.Length - 15 && Text.Substring(I, 15) // ERROR: Unknown binary operator Like
) {
ColorCharItem L = new ColorCharItem();
string[] SP = _Text.Substring(I, 12).Split(",");
L.Color = Color.FromArgb(255, SP[0].Replace("<", ""), SP[1], SP[2]);
L.CharString = _Text.Substring(I + 15, T - I - 15).Replace(Strings.Chr(10), "");
L.Font = new Font(TextFont.Name, TextFont.Size, FontStyle.Bold, GraphicsUnit.Point);
_C.Add(L);
T = I;
} else if (I <= _Text.Length - 15 && Text.Substring(I, 15) // ERROR: Unknown binary operator Like
) {
ColorCharItem L = new ColorCharItem();
string[] SP = _Text.Substring(I, 12).Split(",");
L.Color = Color.FromArgb(255, SP[0].Replace("<", ""), SP[1], SP[2]);
L.CharString = _Text.Substring(I + 15, T - I - 15).Replace(Strings.Chr(10), "");
L.Font = new Font(TextFont.Name, TextFont.Size, FontStyle.Underline, GraphicsUnit.Point);
_C.Add(L);
T = I;
} else if (I <= _Text.Length - 15 && Text.Substring(I, 15) // ERROR: Unknown binary operator Like
) {
ColorCharItem L = new ColorCharItem();
string[] SP = _Text.Substring(I, 12).Split(",");
L.Color = Color.FromArgb(255, SP[0].Replace("<", ""), SP[1], SP[2]);
L.CharString = _Text.Substring(I + 15, T - I - 15).Replace(Strings.Chr(10), "");
L.Font = new Font(TextFont.Name, TextFont.Size, FontStyle.Underline, GraphicsUnit.Point);
_C.Add(L);
T = I;
} else if (I <= _Text.Length - 17 && Text.Substring(I, 17) // ERROR: Unknown binary operator Like
) {
ColorCharItem L = new ColorCharItem();
string[] SP = _Text.Substring(I, 12).Split(",");
L.Color = Color.FromArgb(255, SP[0].Replace("<", ""), SP[1], SP[2]);
L.CharString = _Text.Substring(I + 17, T - I - 17).Replace(Strings.Chr(10), "");
L.Font = new Font(TextFont.Name, TextFont.Size, FontStyle.Bold + FontStyle.Underline, GraphicsUnit.Point);
_C.Add(L);
T = I;
} else if (I <= _Text.Length - 17 && Text.Substring(I, 17) // ERROR: Unknown binary operator Like
) {
ColorCharItem L = new ColorCharItem();
string[] SP = _Text.Substring(I, 12).Split(",");
L.Color = Color.FromArgb(255, SP[0].Replace("<", ""), SP[1], SP[2]);
L.CharString = _Text.Substring(I + 17, T - I - 17).Replace(Strings.Chr(10), "");
L.Font = new Font(TextFont.Name, TextFont.Size, FontStyle.Bold + FontStyle.Underline, GraphicsUnit.Point);
_C.Add(L);
T = I;
} else if (I <= _Text.Length - 17 && Text.Substring(I, 17) // ERROR: Unknown binary operator Like
) {
ColorCharItem L = new ColorCharItem();
string[] SP = _Text.Substring(I, 12).Split(",");
L.Color = Color.FromArgb(255, SP[0].Replace("<", ""), SP[1], SP[2]);
L.CharString = _Text.Substring(I + 17, T - I - 17).Replace(Strings.Chr(10), "");
L.Font = new Font(TextFont.Name, TextFont.Size, FontStyle.Bold + FontStyle.Underline, GraphicsUnit.Point);
_C.Add(L);
T = I;
} else if (I <= _Text.Length - 17 && Text.Substring(I, 17) // ERROR: Unknown binary operator Like
) {
ColorCharItem L = new ColorCharItem();
string[] SP = _Text.Substring(I, 12).Split(",");
L.Color = Color.FromArgb(255, SP[0].Replace("<", ""), SP[1], SP[2]);
L.CharString = _Text.Substring(I + 17, T - I - 17).Replace(Strings.Chr(10), "");
L.Font = new Font(TextFont.Name, TextFont.Size, FontStyle.Bold + FontStyle.Underline, GraphicsUnit.Point);
_C.Add(L);
T = I;
}
}
} catch {
}
}
private void GetLargeRect()
{
Size R = default(Size);
using (System.Windows.Forms.Control CT = new System.Windows.Forms.Control()) {
using (Graphics G = CT.CreateGraphics()) {
R = G.MeasureString(_Text, TextFont, TextRect.Width).ToSize();
R = new Size(R.Width, R.Height + 1000);
}
}
_TextBitmapSize = R;
}

private Bitmap tmpBMP;
private Bitmap SDrawShadow(Bitmap B)
{
double PI = 3.14159265358;
Bitmap tBs = new Bitmap(B.Width, B.Height);
using (Graphics G = Graphics.FromImage(tBs)) {
G.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
using (Bitmap tB = new Bitmap(SetOpacity(B, 0.008))) {
for (int J = 2; J <= 180; J += 10) {
for (int I = 5; I >= 1; I += -1) {
G.DrawImage(tB, new Rectangle(I * Math.Cos(J), I * Math.Sin(J), tB.Width, tB.Height), new Rectangle(0, 0, tB.Width, tB.Height), GraphicsUnit.Pixel);
}
}
}
G.DrawImage(B, new Point(0, 0));
return tBs;
}
}
private Bitmap SetOpacity(Bitmap B, double D)
{
try {
BitmapData bmpDATA = new BitmapData();
if (tmpBMP != null)
tmpBMP.Dispose();
tmpBMP = new Bitmap(B);
Rectangle Rct = new Rectangle(0, 0, B.Width, B.Height);
bmpDATA = tmpBMP.LockBits(Rct, ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
byte[] BTS = new byte[bmpDATA.Stride * bmpDATA.Height + 1];
System.Runtime.InteropServices.Marshal.Copy(bmpDATA.Scan0, BTS, 0, BTS.Length - 1);
double T = 0;
for (int I = 0; I <= BTS.Length - 4; I += 4) {
BTS[I + 0] = 0;
BTS[I + 1] = 0;
BTS[I + 2] = 0;
T = BTS[I + 3];
T = T * D;
BTS[I + 3] = T;
}
System.Runtime.InteropServices.Marshal.Copy(BTS, 0, bmpDATA.Scan0, BTS.Length - 1);
tmpBMP.UnlockBits(bmpDATA);
return tmpBMP;
} catch {
return null;
}
}
}[/code]



VB2010源工程下载:
DSCoolLabel下载
dylike 2012-07-30
  • 打赏
  • 举报
回复
public string Text {
get { return _Text; }
set {
_Text = value;
SizeWidth = 0;
SizeHeight = 0;
MakeOutBitmap();
}
}
public void ClearImgList()
{
ImgList.Clear();
}
private struct ColorCharItem
{
public Color Color;
public string CharString;
public Font Font;
}
/// <summary>
/// 字串所在矩形
/// </summary>
/// <value></value>
/// <returns></returns>
/// <remarks></remarks>
public Rectangle TextRect { get; set; }
/// <summary>
/// 最终输出图像
/// </summary>
/// <value></value>
/// <returns></returns>
/// <remarks></remarks>
public Bitmap OutBitmap { get; set; }
/// <summary>
/// 字体
/// </summary>
/// <value></value>
/// <returns></returns>
/// <remarks></remarks>
public Font TextFont { get; set; }
private StringFormat StringFormat { get; set; }
private int SizeWidth;
private int SizeHeight;
private Size _TextBitmapSize;
/// <summary>
/// 结果图尺寸
/// </summary>
/// <value></value>
/// <returns></returns>
/// <remarks></remarks>
public Size TextBitmapSize {
get { return _TextBitmapSize; }
}
/// <summary>
/// 文字描边颜色
/// </summary>
/// <value></value>
/// <returns></returns>
/// <remarks></remarks>
public Color TextOutLineColor { get; set; }
/// <summary>
/// 获取每个文字的大小
/// </summary>
/// <param name="T"></param>
/// <returns></returns>
/// <remarks></remarks>
private PointF GetTextRegions(string T)
{
try {
using (System.Windows.Forms.Control C = new System.Windows.Forms.Control()) {
using (Graphics G = C.CreateGraphics()) {
return G.MeasureString(T, TextFont, 0).ToPointF();
}
}
} catch {
return null;
}
}

#endregion
private void MakeOutBitmap()
{
try {
int ImgHeightLine = 0;
Size SSz = new Size(TextRect.Width, 0);
int N = 1;
LoadStrings();
GetLargeRect();
int K = 0;
if (OutBitmap != null)
OutBitmap.Dispose();
OutBitmap = new Bitmap(TextRect.Width, _TextBitmapSize.Height + 10);
using (Graphics G = Graphics.FromImage(OutBitmap)) {
PointF Sz = default(PointF);
ColorCharItem CC = new ColorCharItem();
_OutputText = "";
bool IsCharLineImgHeight = false;
for (int II = _C.Count - 1; II >= 0; II += -1) {
CC = (ColorCharItem)_C[II];
_OutputText += CC.CharString;
for (int I = 0; I <= CC.CharString.Length - 1; I++) {
Sz = GetTextRegions("M");
if (CC.CharString.Substring(I, 1) == Strings.Chr(13) || CC.CharString.Substring(I, 1) == Strings.Chr(10)) {
SizeHeight += Sz.Y + CharLine + ImgHeightLine;
SizeWidth = 0;
ImgHeightLine = 0;
} else {
G.TextRenderingHint = TextRenderHint;
if (I <= CC.CharString.Length - 5) {
if (CC.CharString.Substring(I, 5) == "<IMG>") {
try {
int A = 0;
int B = 0;
A = ImgList[K].Width;
B = ImgList[K].Height;
if (K < ImgList.Count) {
【重要提示】本资源设置为0积分下载,若非0积分请勿轻易下载 亲爱的CSDN用户: 首先感谢你点进这个资源页面。我需要提前说明一个重要情况: 本资源原本已设置为“0积分下载”,即作者希望完全免费共享。但CSDN平台有时会根据文件的下载热度、文件大小、用户权限等因素,自动将部分资源的积分调整为非0数值(如1积分、2积分、5积分等)。这是平台系统的自动行为,而非作者本人的设定。 因此,如果你当前看到该资源的下载所需积分不是0(例如显示为1、2、3……),请谨慎决定是否下载。 如果你按照非0积分支付并下载后发现资源内容不符合预期、链接失效,或者实际上该资源本应是免费的,作者无法为此承担积分损失或退还操作。强烈建议:仅在页面显示为0积分时进行下载。 另外,本资源描述中并未直接提供具体的下载地址或外部链接,因为它本身是一个通过CSDN官方上传通道提交的文件/内容包。如果你看到描述中没有外部网盘地址,这是正常的——资源文件应通过CSDN内置的“下载”按钮获取。若因平台积分显示异常导致你支付了积分,请优先联系CSDN客服咨询积分退还政策,作者没有权限修改平台自动设定的积分值。 感谢你的理解与支持。技术分享本应开放,但受限于平台规则,特此提醒如上。祝学习进步!
内容概要:本文围绕基于改进A*算法的栅格全域覆盖路径规划展开研究,重点实现了螺旋四边收缩遍历、往复行式遍历等多种路径遍历策略,并在Matlab平台上对算法进行了建模与仿真。通过对传统A*算法的优化,提升了路径规划的覆盖率与执行效率,有效解决了全域覆盖过程中存在的路径冗余、搜索效率低等问题,尤其适用于复杂障碍物分布环境下的全局路径规划任务。文中系统阐述了算法的设计原理、关键改进点、实现流程及仿真实验结果,验证了改进算法在实际应用场景中的优越性能。; 适合人群:具备一定Matlab编程能力及路径规划基础知识的科研人员、高校研究生、自动化与机器人相关领域的工程技术人员。; 使用场景及目标:①应用于智能机器人、无人机等自主移动设备在未知或部分已知环境中的全域覆盖任务;②为解决传统A*算法在全覆盖路径规划中存在的效率瓶颈提供可行的技术改进方案;③通过Matlab仿真平台验证算法有效性,辅助科研人员完成算法原型开发与性能评估,推动智能系统路径规划模块的实际落地应用; 阅读建议:建议读者结合文中的Matlab代码进行动手实践,深入理解算法细节,尝试在不同规模与复杂度的栅格地图中测试算法表现,进一步掌握路径规划的核心思想与优化技巧。
源码下载地址: https://pan.quark.cn/s/a4b39357ea24 MAC(媒体访问控制器)与PHY(物理接口收发器)是构成以太网基础架构的两个核心组成部分,它们在数据链路层和物理层中承担着重要功能。以太网技术是计算机网络领域中应用最为广泛的局域网技术之一,其相关标准主要由IEEE通过IEEE 802.3标准来制定,该标准详细规定了从物理层到介质访问控制层的通信协议和规范。MAC主要负责数据链路层的下半部分功能,其核心职责包括对网络中的数据传输进行管理,确保数据能够准确无误地在网络中传输。MAC通过评估网络状态来决定是否可以发送数据,并在发送前为数据附加必要的控制信息,最终将数据和控制信息按照标准格式传输至物理层。在接收数据时,MAC协议负责判断数据传输是否出现错误,若无错误则将数据的控制信息剥离后传递给逻辑链路控制(LLC)层。 PHY则负责物理层的具体实现,涵盖了电信号的传输与接收,以及将数据转换为物理信号发送至网络,或将物理信号转换回数据供MAC处理。IEEE 802.3标准对PHY的规范进行了规定,不同速度的PHY,例如10BaseT和100BaseTX,虽然在物理层上具有相同的分组描述,但所采用的信令机制存在差异,10BaseT使用曼彻斯特编码,而100BaseTX采用4B/5B编码,这种设计防止了硬件在不同速度下能够轻易兼容。 媒体独立接口(MII)是用于连接MAC和PHY的标准接口,作为IEEE 802.3定义的一个以太网行业标准,它包含了数据接口和管理接口。数据接口运用了两条独立的信道,其中一条用于发送器,另一条用于接收器,每条信道都包含数据、时钟和控制信号。总共需要16个信号来实现MII接口,以支持MAC和PHY之间的数据交...

111,130

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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