`

[原]合成模式-透明的

阅读更多

[关键字]:java,design pattern,设计模式,《Java与模式》学习,composite,合成模式
[环境]:StarUML5.0 + JDK6
[作者]:Winty (wintys@gmail.com) http://www.blogjava.net/wintys/
[正文]:
透明的合成模式


package pattern.composite.transparent;

import java.util.*;
/**
 * 透明的合成模式:Composite Pattern
 * @version 2009-6-3
 * @author Winty(wintys@gmail.com)
 */
public class TransparentCompositeTest{
    public static void main(String[] args){
        Graphics g1 , g2;
        Graphics p1 , p2;

        g1 = new Line();
        g2 = new Circle();
        p1 = new Picture();
        p2 = new Picture();

        g1.draw();
        g2.draw();
        System.out.println("");

        p1.add(g1);
        p1.add(g2);
        p1.draw();
        System.out.println("");

        p2.add(g1);
        p2.add(g2);
        p2.add(p1);
        p2.draw();
    }
}

/**
 * 抽象Component角色
 */
interface Graphics{
    void draw();

    void add(Graphics g);
    void remove(int i);
    Graphics getChild(int i);
}

/**
 * Leaf角色
 */
class Line implements Graphics{
    @Override
    public void draw(){
        System.out.println("draw a line");
    }

    @Override
    public void add(Graphics g){
    }

    @Override
    public void remove(int i){
    }

    @Override
    public Graphics getChild(int i){
        return null;
    }
}

/**
 * Leaf角色
 */
class Circle implements Graphics{
    @Override
    public void draw(){
        System.out.println("draw a circle");
    }

    @Override
    public void add(Graphics g){
    }

    @Override
    public void remove(int i){
    }

    @Override
    public Graphics getChild(int i){
        return null;
    }
}

/**
 * Composite角色
 */
class Picture implements Graphics{
    private List<Graphics> graphics;

    public Picture(){
        graphics = new ArrayList<Graphics>();
    }

    @Override
    public void draw(){
        Iterator<Graphics> it = graphics.iterator();
        while(it.hasNext()){
            Graphics g = it.next();
            g.draw();
        }
    }

    @Override
    public void add(Graphics g){
        graphics.add(g);
    }

    @Override
    public void remove(int i){
        graphics.remove(i);
    }

    @Override
    public Graphics getChild(int i){
        return graphics.get(i);
    }
}


运行结果:

draw a line
draw a circle

draw a line
draw a circle

draw a line
draw a circle
draw a line
draw a circle
  • 大小: 51.2 KB
分享到:
评论

相关推荐

    PS合成用头发

    在头发合成中,可能需要将一个人物的头部与不同的头发样式进行结合,通过图层的混合模式、透明度、蒙版等工具,使得新添加的头发自然融入原有图像。 在描述中提到“有好几个”,这可能意味着压缩包中包含多份不同的...

    PS抠图合成教程.pdf

    PS抠图合成教程.pdf 本教程主要讲解了如何使用 Adobe Photoshop 进行抠图和合成,旨在帮助读者掌握抠图技巧和合成技术。 1. 图像放大和缩小 在开始抠图之前,需要将图像放大,以确保图像的清晰度。使用“图像”→...

    PS-校园白日梦创意合成.rar

    在“素材”文件夹中,可能会包含各种图片资源,如人物剪影、校园背景、道具元素等,这些都是合成创意图像的原材料。使用这些素材时,需要注意版权问题,确保所有素材均合法使用。 总之,通过学习和实践这些Photo...

    OpenCV技巧_ 常用格式圖片保存為透明背景圖片(附Python源碼)-教你輕鬆製作Logo1

    在图像处理领域,有时我们需要将具有固定背景...这在设计Logo、图像合成或任何需要透明背景的应用场景中非常有用。只要理解了Alpha通道的作用以及如何利用它,就可以根据具体需求灵活调整代码,实现更复杂的透明效果。

    Java设计模式

    - 外观模式:为子系统提供一个统一的接口,使得子系统的复杂性对客户端透明。 - 桥接模式:将抽象部分与它的实现部分分离,使它们可以独立变化。 - 组合模式:允许你将对象组织成树形结构表示部分-整体层次结构。...

    C#23种设计模式_示例源代码及PDF

    合成模式:合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。合成模式就 合成模式 是一个处理对象的树结构的模式。 合成模式把部分与整体的关系用树结构表示出来。 合成模 式使得客户端把一个个单独的...

    将汉字和图片合成一张图片

    常见的图像合成操作包括但不限于:图像叠加、透明度调整、混合模式应用等。在此案例中,我们需要实现的是将文字添加到图片之上。 #### 2. 使用`Bitmap`对象进行图像处理 在Android开发中,`Bitmap`类是用于表示和...

    java 半透明图片 实例代码

    接着,我们使用`Graphics2D`的`setComposite`方法设置AlphaComposite,其中`AlphaComposite.SRC_OVER`模式会将新图像(这里是半透明版本)与目标(背景)图像进行合成,而`0.5f`参数表示50%的透明度。最后,我们将...

    2023年A301型氨合成催化剂行业市场突围建议及需求分析报告.docx

    A301型氨合成催化剂行业市场突围建议及需求分析报告深入探讨了这一特定领域的市场前景、政策环境、运行趋势以及发展模式。以下是基于报告内容的关键知识点解析: 1. **市场预测与分析**: - 时间序列预测:这是一...

    20种PS技术

    - **技术要点**:通过图层混合模式实现图像合成。 - **操作步骤**: - 创建新图层,并设置混合模式为叠加。 - 调整不透明度,实现图像之间的自然过渡。 ### 18. 高级编辑技巧 - **技术要点**:通过多种工具实现...

    VC++图像合成软件

    例如,用户可能希望指定合成的透明度,这就需要用到Alpha通道的处理。 最后,合成后的图像需要保存回磁盘。这需要执行文件写入操作,并确保保存的格式与原始图片相同,或者根据用户选择转换为其他格式。在VC++中,...

    图片合成并上传,写水印

    在Python的PIL中,我们可以创建一个包含水印的透明图层,然后用`draw()`方法在指定位置绘制文字,或者直接将带有水印的图片覆盖在原图上。水印的透明度、大小、位置等都是可以调整的参数,以达到最佳视觉效果。 ...

    PS合成金鱼在灯泡中吐水泡效果.doc

    通过这个教程,你可以掌握在PS中进行复杂图像合成的基本技巧,如图层管理、蒙版应用、混合模式的运用,以及如何通过画笔工具进行精确的图像编辑。这些技能不仅适用于制作类似创意合成,还可以广泛应用于各种图像设计...

    photoshop设计图片技巧.doc

    - 在通道面板选择蓝色通道,应用图像,设置图层为背景,混合模式为正片叠底,不透明度50%,反相。 - 回到图层面板,创建曲线调整图层,调整蓝通道和红通道的数值。 - 新建黑色图层,设置混合模式为正片叠底,调整...

    20种简单Adobe Photoshop技术

    - 创建一个图层,使用“柔光”模式,透明度设置在4到6之间; - 在另一图层上,预先设置好透明度为20%,模式为“图片”。 #### 技术六:图层混合模式应用 - **技术要点**:合理利用图层混合模式,实现特殊效果。 -...

    PS明度图层混合模式调整

    在PS中,每个图层都可以有自己的透明度和混合模式,混合模式决定了当前图层的像素如何与下方图层的像素相互作用。而“明度”混合模式是一种基于像素亮度的混合方式,它只考虑每个像素的明暗信息,忽略色彩信息。 当...

    利用python生成照片墙的示例代码

    - 照片墙合成函数 `picture_wall_mask` 实现了一个循环,遍历文字图像的每个像素,并根据像素的透明度值来选择和调整背景图片。这样可以在输出图像中形成类似“文字”的效果。 - 主函数 `main` 将所有步骤整合起来,...

    简单ps的方法介绍,有基础

    - 执行“图像”→“模式”→“转换为RGB模式”,再执行“编辑”→“清除”以删除原图层。 - 执行“选择”→“色彩范围”,调整参数以获取所需效果。 3. **纹理效果**: - 创建新图层,执行“图像”→“调整”→...

    photoshop5.0/5.5/6.0/7.0(初级)试题汇编第四单元解答

    该题考察如何创建透明图层,并设置其透明度和混合模式。关键在于: - **透明图层创建**:通过新建透明背景图层或调整现有图层属性来实现。 - **混合模式应用**:合理选择混合模式(如叠加、柔光等)以达到预期视觉...

    PS广告创意设计实例——拼出来的艺术

    通过绘制黑白或灰度的蒙版,设计师可以精确控制各个元素的可见性,使得合成过程更为精细,同时避免了对原图层造成不可逆的修改。 在实际操作中,设计师还需要注意色彩搭配和色调统一。通过调整色相、饱和度、亮度和...

Global site tag (gtag.js) - Google Analytics