JS實(shí)現(xiàn)陰影是這個(gè) 括號后面是括號內(nèi)可以填寫的參數(shù) box-shadow:(inset內(nèi)陰影)水平偏移量 垂直偏移量 羽化范圍 陰影增加面積 顏色
創(chuàng)新互聯(lián)公司自2013年創(chuàng)立以來,先為安居等服務(wù)建站,安居等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為安居企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
java swing是提供了設(shè)置陰影和透明度的方法的,示例如下:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import com.sun.awt.AWTUtilities;
導(dǎo)入 AWTUtilities可能會提示:訪問限制:由于對必需的庫 C:\Program Files\Java\jre6\lib\rt.jar 具有一定限制,因此無法訪問類型 AWTUtilities,請到eclipse進(jìn)行設(shè)置:窗口》首選項(xiàng)》java》編譯器》錯(cuò)誤警告 選擇 代碼樣式》訪問外層不可訪問成員》 把錯(cuò)誤修改成功 警告
public class Ceshi extends JFrame
{
public Ceshi()
{
JLabel label=new JLabel("這是一個(gè)標(biāo)簽!");
label.setOpaque(false);
label.setHorizontalAlignment(JLabel.CENTER);
add(label);
setSize(600,400);
setLocationRelativeTo(null);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
//Opacity最大值為1.0f,也就是什么也不透明,取值不能大于1.0f
AWTUtilities.setWindowOpacity(this,0.5f);
setVisible(true);
}
public static void main(String[] args)
{
new Ceshi();
}
}
Android實(shí)現(xiàn)純java代碼字體陰影效果,主要是通過activity的draw方法,進(jìn)行重新繪制,如下代碼:
package?canvas.test;
import?android.app.Activity;
import?android.os.Bundle;
import?android.content.Context;
import?android.graphics.Bitmap;
import?android.graphics.BitmapFactory;
import?android.graphics.Canvas;
import?android.graphics.Color;
import?android.graphics.Paint;
import?android.graphics.PorterDuff;
import?android.graphics.PorterDuff.Mode;
import?android.graphics.PorterDuffXfermode;
import?android.graphics.Rect;
import?android.graphics.RectF;
import?android.graphics.drawable.Drawable;
import?android.view.View;
public?class?ShaderEffect?extends?Activity?{
@Override
public?void?onCreate(Bundle?savedInstanceState)?{
super.onCreate(savedInstanceState);
setContentView(new?ImageEffect(this));
}
class?ImageEffect?extends?View{
Paint?paint;?
public?ImageEffect?(Context?context){
super(context);
paint?=?new?Paint();//初始化畫筆,為后面陰影效果使用。
paint.setAntiAlias(true);//去除鋸齒。
paint.setShadowLayer(5f,?5.0f,?5.0f,?Color.BLACK);//設(shè)置陰影層,這是關(guān)鍵。
paint.setXfermode(new?PorterDuffXfermode(Mode.SRC_IN));
}
@Override
public?void?onDraw(Canvas?canvas){
super.onDraw(canvas);
int?posX?=?20;
int?posY?=?50;
int?PicWidth,PicHegiht;?
Drawable?drawable?=?getResources().getDrawable(R.drawable.button);
Drawable?dbe?=?getResources().getDrawable(R.drawable.button).mutate();//如果不調(diào)用mutate方法,則原圖也會被改變,因?yàn)檎{(diào)用的資源是同一個(gè),所有對象是共享狀態(tài)的。
Drawable?drawTest?=?getResources().getDrawable(R.drawable.button);
Bitmap?bmp?=?BitmapFactory.decodeResource(getResources(),?R.drawable.button);
PicWidth?=?drawable.getIntrinsicWidth();
PicHegiht?=?drawable.getIntrinsicHeight();
drawTest.setBounds(posX,?(2?*?posY)?+?PicHegiht,?posX?+?PicWidth,?(2?*?posY)?+?2?*?PicHegiht?);
drawable.setBounds(posX,posY,posX+PicWidth,posY+PicHegiht);
dbe.setBounds(0,?0,?PicWidth,?PicHegiht);
canvas.drawColor(Color.WHITE);//設(shè)置畫布顏色
canvas.save(Canvas.MATRIX_SAVE_FLAG);
dbe.setColorFilter(0x7f000000,PorterDuff.Mode.SRC_IN);
canvas.translate(posX?+?(int)(0.9?*?PicWidth/2),?posY?+?PicHegiht/2);//圖像平移為了剛好在原圖后形成影子效果。
canvas.skew(-0.9F,?0.0F);//圖像傾斜效果。
canvas.scale(1.0f,?0.5f);//圖像(其實(shí)是畫布)縮放,Y方向縮小為1/2。
dbe.draw(canvas);//此處為畫原圖像影子效果圖,比原圖先畫,則會在下層。
drawable.clearColorFilter();
canvas.restore();
canvas.save(Canvas.MATRIX_SAVE_FLAG);
drawable.draw(canvas);//此處為畫原圖像,由于canvas有層次效果,因此會蓋在影子之上。
canvas.restore();
//默認(rèn)無效果原圖
canvas.save(Canvas.MATRIX_SAVE_FLAG);
drawTest.draw(canvas);
canvas.restore();
//圖片陰影效果
canvas.save(Canvas.MATRIX_SAVE_FLAG);
//Rect?rect?=?new?Rect(2*posX?+?PicWidth,?2*posY?+?PicHegiht,?2*posX?+?2*PicWidth,?2*posY?+?2*PicHegiht);//此為理論上的陰影圖坐標(biāo)
Rect?rect?=?new?Rect(2*posX?+?PicWidth?+?3,?2*posY?+?PicHegiht?+?3,?2*posX?+?2*PicWidth?-?2,?2*posY?+?2*PicHegiht?-?2);
//由于圖片的實(shí)際尺寸比顯示出來的圖像要大一些,因此需要適當(dāng)更改下大小,以達(dá)到較好的效果
RectF?rectF?=?new?RectF(rect);
canvas.drawRoundRect(rectF,?10f,?10f,?paint);//在原有矩形基礎(chǔ)上,畫成圓角矩形,同時(shí)帶有陰影層。
canvas.drawBitmap(bmp,?2*posX?+?PicWidth,?2*posY?+?PicHegiht,?null);//畫上原圖。
canvas.restore();
}
}
}