作者:莫轻松 | 来源:互联网 | 2023-10-16 19:28
有些代码在图片上写上文字后文字会不太清楚,加阴影效果也不理想,请教有没有加光晕的?效果就像新浪新闻左上角的图片新闻那样.比如这张图片:http:image2.sina.com.cndyFo
有些代码在图片上写上文字后文字会不太清楚,加阴影效果也不理想,请教有没有加光晕的?效果就像新浪新闻左上角的图片新闻那样.
比如这张图片:http://image2.sina.com.cn/dy/FocusPic/U41P1T124D1F2633DT20050915010756.jpg
13 个解决方案
那是描边出来的。你先画到一张位图上,描边后再画到目标上。描边算法Google很多。
样式表中Filter:DropShadow(color=#FFFFFF,offx=1,offy=1); 这样的一个属性好像可以
谢谢各位,但有没有实现的方法啊?
样式表肯定是不行的,是画在图片上
Dim g As Graphics = e.Graphics '这里是在paint事件里面写。
'蓝底色
g.Clear(Color.Blue)
Dim oFormPath As New GraphicsPath
'边
oFormPath.AddString("测试", New FontFamily("隶书"), FontStyle.Bold, 200, Me.ClientRectangle, StringFormat.GenericDefault)
'填充 --黑色
g.FillPath(New SolidBrush(Color.Black), oFormPath)
'描边 --白色
g.DrawPath(New Pen(Color.White), oFormPath)
===============================
CSDN小助手 是一款脱离浏览器也可以使用csdn论坛的
软件!
界面: http://qqwwee.com/
下载: http://qqwwee.com/csdn.rar 包含源代码
我这里有一人画图的效果,你将DrawImage 改成DrawString了,这些你肯定会的!
//强光照射滤镜的制作程序 调用 --- 之五 求两点之间的距离
Graphics graphics=this.CreateGraphics();
graphics.Clear(Color.White);
Bitmap image=new Bitmap("1.bmp");
int Width=image.Width;
int Height=image.Height;
int A=Width/2;
int B=Height/2;
//center:图片中心点,此值会让强光中心发生偏移
Point Center=new Point(A,B);
//R:强光照射的半径,即“光晕”
int R=100;
Color colorTemp,color;
graphics.DrawImage(image,new Rectangle(0,0,Width,Height));
//依次访问每个像素
for(int x=0;x {
for(int y=0;y {
Point tmp=new Point(x,y);
//如果像素位于“光晕”之内
if(fDistance(tmp,Center) {
color=image.GetPixel(x,y);
int r,g,b;
//根据该点距离强光中心点的距离,分别让RGB值变化
//220:亮度增加常量,该值越大,光亮度越强
float tmp_r=220.0f*(1.0f-fDistance(tmp,Center)/R);
r=color.R+(int)tmp_r;
r=Math.Max(0,Math.Min(r,255));
g=color.G+(int)tmp_r;
g=Math.Max(0,Math.Min(g,255));
b=color.B+(int)tmp_r;
b=Math.Max(0,Math.Min(b,255));
colorTemp=Color.FromArgb(255,(int)r,(int)g,(int)b);
//将增亮后的像素值回写到位图
image.SetPixel(x,y,colorTemp);
}
}
//动态绘制滤镜的效果图
graphics.DrawImage(image,new Rectangle(Width,0,Width,Height));
}
//如果在此处用graphics.DrawImage(image,new Rectangle(Width,0,Width,Height));绘制过程是静态的
*/
//供调用 --- 之五 求两点之间的距离
private float fDistance(Point tmp,Point Center)
{
float dists; //两点距离
dists=(float)Math.Sqrt(Math.Abs(Center.X-tmp.X)*Math.Abs(Center.X-tmp.X)+Math.Abs(Center.Y-tmp.Y)*Math.Abs(Center.Y-tmp.Y));
return dists;
}
我有办法,呵呵,已结贴了?
(1)你所说的新浪那个实际上是一种勾边的效果而已。使用g.DrawPath即可。
(2)真正的光晕效果是这样的:
见http://blog.csdn.net/johnsuna/archive/2005/12/19/556140.aspx中2006年后的大字效果“Happy Christmas”(应该是Merry Christmas),呵呵。
这也是我使用GDI+做出来的。