manim页面中不规则分割整个人页面。

news2024/11/18 15:25:48

界面中的分割方式

在信息设计中,我们常常需要通过分割设计的方式来对信息进行分组,界面中的分割方式大致分为三种:卡片、线条、留白。

界面中的分割方式主要可以分为以下几种:

一、根据规则进行分割:

  1. 规则网格分割

    • 特点:采用均匀的网格布局,所有单元格大小相同,常用于展示相似内容(如表格)。
    • 应用:数据展示、仪表盘、图标排列等。
from manim import *  

class TableExamples01(Scene):  # 定义一个名为 TableExamples01 的场景  
    def construct(self):      # 定义场景中的构建过程  
        
        # 创建一个表格并设置其宽度和行列内容  
        t2 = Table(  
            [["This", "is a"],  # 表格的内容  
             ["simple", "Table."]],  
            row_labels=[Text("R1"), Text("R2")],  # 行标签  
            col_labels=[Text("C1"), Text("C2")],  # 列标签  
            top_left_entry=Text(" "),  # 左上角的位置,留空  
            include_outer_lines=True,   # 包含外部边框  
            arrange_in_grid_config={"cell_alignment": RIGHT},  # 单元格内容右对齐  
        )  
        
        # 将表格缩放至接近充满整个页面  
        #t2.scale(1.0)  # 根据需要调整缩放比例,这里保持为1,不缩放  
        # 设置表格的尺寸  
        #t2.auto_scale()  # 自动调整表格的尺寸  
        t2.set(width=12, height=6.8)  # 设置表格的尺寸  
        
        # 获取第二行第二列单元格,并将其设置为红色  
        red_cell = t2.get_cell((2, 2), color=RED)  
        t2.add(red_cell)  
        
        # 高亮显示第一行第一列的单元格,颜色为黄色  
        t2.add_highlighted_cell((1, 1), color=YELLOW)  
        
        # 创建一个组并添加表格  
        g = Group(t2)  
        # 将表格居中摆放  
        g.move_to(ORIGIN)  
        
        self.add(g)  # 在场景中添加组  

 运行结果

  1. 列式/行式分割

    • 特点:根据列或行的数量进行分割,适合于内容较多且有层级的情况。
    • 应用:导航栏、菜单、内容展示区等。

行式:

from manim import *  
import random  

class TableExamples02(Scene):  # 定义一个名为 TableExamples02 的场景  
    def construct(self):      # 定义场景中的构建过程 
        self.camera.background_color = "#2F4F14" 
        # 随机文本列表  
        random_texts = [  
            "Cut Cell", "Copy Cell", "Paste Cell Below",   
            "Delete Cell", "Split Cell", "Merge Selected Cells",   
            "Merge Cell Above", "Merge Cell Below",   
            "Clear Cell Output", "Clear Outputs of All Cells",   
            "Enable Scrolling for Outputs", "Disable Scrolling for Outputs",   
            "Undo Cell Operation", "Redo Cell Operation",   
            "Restart Kernel...", "New Console for Notebook"  
        ]  

        # 创建多条水平线和随机文本  
        for i in range(-8, 10, 1):  # 从 -8 到 8,步长为 2  
            horizontal_line = Line(start=LEFT * 8, end=RIGHT * 8, color=WHITE).shift(2.5 * UP + i * DOWN)  
            self.add(horizontal_line)  # 将每条线添加到场景中  
            
            # 随机选择一段文本  
            text = random.choice(random_texts)  
            text_mobject = Text(text, color=WHITE).next_to(horizontal_line, UP)  # 将文本放在横线的上方  
            self.add(text_mobject)  # 将文本添加到场景中  

二、根据不规则进行分割:

  1. 自由形状分割

    • 特点:根据内容需求和设计风格,采用不规则的形状分割,通常具有创意性和个性化。
    • 应用:艺术网站、社交媒体、创意作品展示等。
  2. 响应式分割

    • 特点:依据屏幕大小和用户行为动态调整分割方式,具有灵活性。
    • 应用:移动端应用、响应式网站设计等。
from manim import *  

class InfiniteLines01(Scene):  
    def construct(self):  
        # 设置背景颜色  
        self.camera.background_color = "#2F4F14"  
        
        # 创建无限横向线  
        horizontal_line = Line(start=LEFT * 8, end=RIGHT * 8, color=WHITE).shift(2.8 * UP)  
        vertical_line = Line(start=DOWN * 8, end=UP * 8, color=WHITE)  

        # 创建文本并移动到横线的上方和竖线的左方的中间位置  
        t = Text("线性代数", font_size=36)  # 设置字体大小  
        t.move_to(UP * 3.2 + LEFT * 3)  # 调整位置到横线的上方和竖线的左方的中间  

        # 添加线条到场景  
        self.play(Create(horizontal_line))  
        self.play(Create(vertical_line))  
        
        # 添加文本到场景  
        self.play(Write(t))  
        
        self.wait(2)

 运行结果:

 不规则分割页面的布局:
实列1:
from manim import *  

class InfiniteLines02(Scene):  
    def construct(self):  
        # 设置背景颜色  
        self.camera.background_color = "#2F4F14"  
        
        # 创建无限横向线  
        horizontal_line = Line(start=LEFT * 8, end=RIGHT * 8, color=WHITE).shift(2.8 * UP)  
        vertical_line = Line(start=DOWN * 8, end=UP * 8, color=WHITE)  

        # 创建文本并移动到横线的上方和竖线的左方的中间位置  
        t = Text("线性代数", font_size=36)  
        t.move_to(UP * 3.2 + LEFT * 3)  

        # 添加线条到场景  
        self.play(Create(horizontal_line))  
        self.play(Create(vertical_line))  
        self.add(NumberPlane())
        
        # 添加文本到场景  
        self.play(Write(t))  
        
        # 创建四个半径为1的圆  
        circles = []  
        for x, y in [(-3, 3), (3, 3), (-3, -3), (3, -3)]:  # 定义每个圆心的位置  
            circle = Circle(radius=1, color=BLUE)  # 创建圆  
            circle.move_to(RIGHT * x + UP * y)   # 移动到指定位置  
            circles.append(circle)  # 将圆添加到列表  

        # 添加圆到场景  
        for circle in circles:  
            self.play(Create(circle))  

        self.wait(2)  # 保持场景2秒

 实例2:
from manim import *  

class InfiniteLines03(Scene):  
    def construct(self):  
        # 设置背景颜色  
        self.camera.background_color = "#2F4F14"  
        
        # 创建无限横向线  
        horizontal_line = Line(start=LEFT * 8, end=RIGHT * 8, color=WHITE).shift(2.8 * UP)  
        vertical_line = Line(start=DOWN * 8, end=UP * 8, color=WHITE)  

        # 创建文本并移动到横线的上方和竖线的左方的中间位置  
        t = Text("线性代数", font_size=36)  
        t.move_to([-3.505,3.5,0])  

        # 添加线条到场景  
        self.play(Create(horizontal_line))  
        self.play(Create(vertical_line))  
        
        # 添加文本到场景  
        self.play(Write(t))  
        self.add(NumberPlane())
        
        # 计算每一块的中心点并绘制圆  
        centers = [(-3.505, 3.5), (3.505, 3.5), (-3.505, -0.5), (3.505, -0.5)]  # 各块的中心点坐标  
        circles = []  
        
        for x, y in centers:  
            circle = Circle(radius=0.25, color=BLUE)  # 创建半径为1的圆  
            circle.move_to(RIGHT * x + UP * y)  # 移动到中心点  
            circles.append(circle)  # 添加到圆的列表  

        # 添加所有圆到场景  
        for circle in circles:  
            self.play(Create(circle))  

        self.wait(2)  # 保持场景2秒

三、有规则与不规则分割的特点比较:

  • 有规则分割特点

    • 结构清晰,易于理解。
    • 适合标准化内容展示,有助于用户快速获取信息。
  • 不规则分割特点

    • 视觉吸引力强,能够突出特定内容。
    • 提供更多的创造性,灵活性高,但可能会在信息传递上造成一定的混乱。

总的来说,选择分割方式时需根据界面的目标、用户需求和内容特性进行合理设计。

from manim import *  

class SplitPage(Scene):  
    def construct(self): 
        self.camera.background_color = "#2F4F14" 
        # 创建无限横向线  
        horizontal_line = Line(start=LEFT * 8, end=RIGHT * 8, color=WHITE).shift(3 * UP)  
        vertical_line = Line(start=DOWN * 8, end=UP * 8, color=WHITE)  
        
        # 创建一个矩形代表页面  
        page = Rectangle(width=6, height=4, color=WHITE)   
        page.move_to(ORIGIN)  # 将页面移动到正中心  
        
        # 显示页面和线  
        self.play(Create(horizontal_line))  
        self.play(Create(vertical_line))   
        self.play(Create(page))  

        # 将页面均匀分成两块  
        left_half = Rectangle(width=3, height=4, color=WHITE).move_to(LEFT * 1.5)  
        right_half = Rectangle(width=3, height=4, color=WHITE).move_to(RIGHT * 1.5)  
        
        # 显示分开的两块  
        self.add(right_half,left_half)  

        # 创建不规则的分割线,首先将右边的部分分割成三个不规则的部分  
        line1 = Line([3, -2, 0], [3, 2, 0], color=BLACK) # 垂直分割线  
        line2 = Line([3.5, -1.5, 0], [3.5, 1.5, 0], color=BLACK) # 另一条线  

        # 将分割线添加到场景中  
        self.play(Create(line1))  
        self.play(Create(line2))  

        # 创建右边的三个不规则部分  
        lower_shape = Polygon(  
            [3, -2, 0], [4, -1, 0], [3.5, -0.5, 0], color=YELLOW  
        ).set_fill(YELLOW, opacity=0.5).scale(3)  
        
        upper_shape = Polygon(  
            [3, 2, 0], [4, 1, 0], [3.5, 0.5, 0], color=BLUE  
        ).set_fill(BLUE, opacity=0.5).scale(3).  shift(6*LEFT+2*DOWN)
        
        # 将不规则部分添加到场景中  
        self.play(Create(lower_shape)) 
        self.play(Create(upper_shape))  
        
        # 结束  
        self.wait(2)  

# 要运行这个例子,请在终端中使用以下命令:  
# manim -pql <你的文件名.py> SplitPage
%manim -qm -v WARNING SplitPage

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2172791.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Starrocks with 嵌套

在某些场景下需要进行 with 嵌套 需要以下进行处理&#xff0c;报如图错误 with abc as (select * from .. ) insert into xxx select * from abc尝试创建物化视图 CREATE MATERIALIZED VIEW IF NOT EXISTS ads_test.xxx_mv REFRESH DEFERRED MANUAL AS with abc as (select…

C#基于SkiaSharp实现印章管理(9)

将印章设计模块设计的印章保存为图片并集中存放在指定文件夹内。新建印章应用项目&#xff0c;主要实现对图片及PDF文件加盖印章功能。本文实现给图片加盖印章功能。   给图片加盖印章的逻辑比较简单&#xff0c;就是将印章图片绘制到图片指定位置&#xff0c;使用SKControl控…

如何选择数据库架构

选择合适的数据库架构是一个复杂的过程&#xff0c;它取决于多种因素&#xff0c;包括应用程序的需求、数据量的大小、并发访问量、数据一致性要求、预算以及技术团队的熟悉程度等。以下是一些关键的步骤和考虑因素&#xff0c;帮助你选择合适的数据库架构&#xff1a; 1. 分析…

JITWatch安装使用方法

JITWatch 版本1.4.2 JDK 版本 11以上 1.下载JITWatch&#xff1a; https://github.com/AdoptOpenJDK/jitwatch/releases/download/1.4.2/jitwatch-ui-1.4.2-shaded-win.jar 2.启动 bat脚本执行&#xff1a;通过启动jar包方式启动JITWatch echo off start cmd /c "ti…

人工智能 实验1 Python语法

我发现了有些人喜欢静静看博客不聊天呐&#xff0c; 但是ta会点赞。 这样的人呢帅气低调有内涵&#xff0c; 美丽大方很优雅。 说的就是你&#xff0c; 不用再怀疑哦 实验1 Python语言基础一 【实验目的】掌握Python及其集成开发环境的下载安装及其简单应用 【实验内容…

结合了LLM(大语言模型)的编辑器,不仅能理解人类语言,还能与用户互动,仿佛有了自己的思想。...

从前有一个神奇的编辑器王国&#xff0c;那里住着各种编辑器&#xff1a;开源的、AI代码编辑器、视频编辑器&#xff0c;还有专门处理邮件和音频的编辑器。一天&#xff0c;国王Markdown决定举办一场盛会&#xff0c;邀请所有编辑器展示各自的才华。 开源编辑器们自豪地展示了他…

解决hbase和hadoop的log4j依赖冲突的警告

一、运行hbase的发现依赖冲突的警告 这警告不影响使用 二、重命名log4j文件 进入HBase的lib包下&#xff0c;将HBase的log4j文件重命名&#xff0c;改成备份&#xff0c;这样再次运行hbase的时候&#xff0c;就没有依赖冲突了。 三、冲突成功解决

数据分析工具julius ai如何使用

什么是julius ai Julius AI 是一款强大的ai数据分析工具。用户可以使用excel、数据库、文本文件等多种格式的数据&#xff0c;Julius AI 会自动分析这些数据并提供详细的解释和可视化图表。官网显示它目前已经有三十万用户。它也支持手机版。 虽然openai也支持生成图表&#xf…

研究生如何利用ChatGPT帮助开展日常科研工作?

小白可做&#xff01;全自动AI影视解说一键成片剪辑工具https://docs.qq.com/doc/DYnl6d0FLdHp0V2ll 作为当代研究生&#xff0c;科研工作三部曲----读文献、开组会、数据分析。无论哪一个&#xff0c;都令研究生们倍感头疼&#xff0c;简直就是梦魇。每当看到导师发来的消息&a…

Redis的主要特点及运用场景

Redis的主要特点及运用场景 Redis&#xff08;Remote Dictionary Server&#xff09;是一个开源的高性能键值对&#xff08;key-value&#xff09;数据库。它支持多种类型的数据结构&#xff0c;如字符串&#xff08;strings&#xff09;、散列&#xff08;hashes&…

CS61b学习 part 2

cscircles.cemc.uwaterloo.ca/java_visualize/#modedisplay public class ClassNameHere {public static void main(String[] args) {Walrus a new Walrus(1000, 8.3);Walrus b;b a;/*由于缺少函数&#xff0c;导致两个对象指向的是同一份*/b.weight 5;System.out.println(…

通俗易懂的Latex使用步骤

目录 Latex的安装和基本框架 TeX Live和TeXstudio的安装 Latex基本框架 标题 目录 列表 字体设置 图片 单张图片 多张图片&#xff08;以两张图片为例&#xff09;&#xff1a; 多张图片&#xff08;以三张图片为例&#xff09;&#xff1a; 公式 公式复制神器: …

全网最适合入门的面向对象编程教程:53 Python字符串与序列化-字符串与字符编码

全网最适合入门的面向对象编程教程&#xff1a;53 Python 字符串与序列化-字符串与字符编码 摘要&#xff1a; 在 Python 中&#xff0c;字符串是文本的表示&#xff0c;默认使用 Unicode 编码&#xff0c;这允许你处理各种字符集&#xff0c;字符编码是将字符转换为字节的规则…

第五部分:3---信号的介绍、产生、保存、处理

目录 信号的概念&#xff1a; 异步的概念&#xff1a; 信号的3种处理方式&#xff1a; 修改2号信号为自定义信号处理&#xff1a; ​编辑 信号捕捉后恢复和信号的忽略&#xff1a; 信号的分类与编号&#xff1a; 特殊的信号&#xff1a; 进程信号表的继承&#xff1a;…

标准 I/O

标准 I/O 引言 I/O 是一切实现的基础&#xff0c;其分为标准 I/O 和文件 I/O。 文件 I/O 依赖操作系统&#xff0c;因系统的实现方式而定&#xff0c;对于程序员来说会造成很大困扰。如打开文件&#xff0c;Linux 系统调用为 open() 函数&#xff0c;而 Windows 的系统调用为…

在新ARM板上移植U-Boot和Linux指南

序言 从支持一个定制板子在U-Boot和Linux中的过程中得到经验以一个带有知名SoC&#xff08;i.MX6&#xff09;且IP已经得到支持的板子为例&#xff0c;这次讨论几乎不涉及编码技能&#xff0c;更多地聚焦在U-Boot部分 一般原则 如果您有您的BSP&#xff08;板级支持包&#…

推荐、nlp、算法题等相关复习(0922-0929)

1. 算法题&#xff1a;路径总和三 求一棵树中所有路径和为targetsum的值&#xff0c;其实有点像和为k的数组&#xff0c;用前缀和来做 先求出前缀和数组&#xff0c;再类似两数之和问题&#xff0c;每次插入一个数&#xff0c;如果target-当前数在哈希表里存在&#xff0c;更…

Vscode: reason: oom, code: -536870904

最近使用github+插件github copilot开发时遇到这个问题, 出现原因:在chat窗口输入了过大的内容。 现象是:每次打开vscode后正常,且打开其他文件夹,再打开chat窗口运行正常。但当再次打开原来的文件夹并打开chat窗口时,则出现此崩溃问题。 尝试以下办法: 1、将D盘虚拟…

Android——添加联系人

概述 第一步 往手机联系人应用中的raw_contacts表添加一条记录 raw_contacts表 ContentValues values new ContentValues();// 往 raw_contacts 添加联系人记录&#xff0c;并获取添加后的联系人编号Uri uri resolver.insert(ContactsContract.RawContacts.CONTENT_URI, …

AI绘画相似风格的作品

目标&#xff1a;根据一张图风格&#xff0c;画出更好的图片 步骤一 等待几分钟&#xff0c;就出来了&#xff0c;点击获取第一个关键词并复制 然后会得到这个四张图片 选中其中的一张&#xff0c;比如第一张 很快就拿到了结果