精华内容
下载资源
问答
  • 对话框如何制作
    2021-11-07 22:30:53

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.Drawing.Drawing2D;

    namespace thinger.com.Pro1
    {
    public partial class Frmlogin : Form
    {
    public Frmlogin()
    {
    InitializeComponent();
    }

        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
            //获取画布
            Graphics g = e.Graphics;
    
            Rectangle rec = new Rectangle(0,0,this.Width, this.Height);
            LinearGradientBrush brush = new LinearGradientBrush(
                rec, Color.FromArgb(225, 101, 127), Color.FromArgb(93, 127, 124),
                LinearGradientMode.BackwardDiagonal);
            g.FillRectangle(brush, rec);
    
        }
    
        private void label1_Click(object sender, EventArgs e)
        {
    
        }
    
        //无边框拖动,一个事件可以被很多事件引用,比如其他字框也可以引用
        //lal_title_MouseDown与lal_title_MouseMove
        private Point mpoint;
        private void lal_title_MouseDown(object sender, MouseEventArgs e)
        {
            mpoint = e.Location;
        }
    
        private void lal_title_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left) 
            {
                this.Location = new Point(this.Location.X + e.X - mpoint.X,
                    this.Location.Y + e.Y - mpoint.Y);//+上鼠标移动的距离:e.X,减去原来的距离mpoint.X
            }
        }
    }
    

    }

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    using System.Windows.Forms;

    namespace thinger.com.Pro1
    {
    static class Program
    {
    ///
    /// 应用程序的主入口点。
    ///
    [STAThread]
    static void Main()
    {
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);

            Frmlogin frm = new Frmlogin();
            DialogResult dr = frm.ShowDialog();
    
            if (dr == DialogResult.OK)
            {
                Application.Run(new Frmlogin());
            }
            //Application.Run(new Frmlogin());
        }
    }
    

    }

    更多相关内容
  • 金属质感对话框制作PPT教程。金属质感有哪些特征?冷硬,颜色选择:银灰、金、白,偏冷色调,无透明度,光效:高光与阴影,渐变,肌理效果。透视感:具有一定厚度,立体感,PPT中通常采用边缘渐变、形状叠加、三维...
  • vc++对话框制作与编程-Dialog.pdf
  • 在CAD环境下,利用LISP做对话框,方便数据输入。
  • html5手机对话框制作文字提示弹出框特效
  • Android 自定义实现一个AlertDialog对话框,提示框或警告框弹出式对话框,套用了系统Holo风格,生成符合系统主题的AlertDialog.Builder,可以分别定义弹出提示的标题文字及提示内容:  builder.setTitle("Test ...
  • 关于对话框制作这个是很经典的例子,大家做软件可能用到,欢迎下载
  • 游戏中的对话框制作

    在大部分游戏中都会有对话框的存在,能推动剧情发展,能让玩家玩懂游戏。

    那么在Pygame中,应该怎么制作这种对话框呢?

     Pygame中基础的文字渲染和绘制:

    #创建文字库
    my_font = pygame.font.Font(font_family,size)
    #前后参数分别为字体,大小
    my_text = my_font.render(text,color,bool)
    #渲染文字,参数分别为 文字内容,颜色(R,G,B),是否抗锯齿(True/False)
    surface.blit(my_text,(x,y))
    #绘制文字

    但是问题是:渲染文字这一块十分的耗费性能,就和加载导入图片一样,是很吃帧数的。于是,我就通过提前渲染并储存在一个列表里来尽量做到优化。

    竟然对话框的字是一个一个出现的,而且还有彩色文字,那么,我想到的方法是将每一个字拆分开放在列表中,并且写入对应坐标,就比如:

    import pygame,sys
    from pygame.locals import *
    
    pygame.init()
    #初始化pygame,否则用到字体这一块会报错
    
    window_w,window_h = 1280,720
    screen = pygame.display.set_mode((window_w,window_h))
    #创建宽1280高720的屏幕
    
    my_font = pygame.font.Font("font.ttf",40)
    #这里是直接导入字体文件而并非系统自带字体
    
    t1 = my_font.render("你",(128,128,128),True)
    t2 = my_font.render("好",(255,255,255),True)
    lst = [(t1,(0,0)),(t2,(40,0))]
    
    while True:#开启循环
        
        screen.fill((0,0,0))#填充背景为纯黑
    
        for event in pygame.event.get(): #监听事件,比如退出
            if event.type == pygame.QUIT:
                sys.exit()
                    
        for i in lst:#遍历列表绘制文字
            screen.blit(i[0],i[1])
    
        pygame.display.flip()#刷新屏幕

    这样就能绘制出两个紧密连接并且颜色不同的字了

    不过我会把特殊效果和基础输出分开讲的,这篇主要讲文字输出

    竟然要做出一个方便,好用的对话框,

    我们可以将整一个对话框存储在一个类里边,先搞参数:

    class WordsOutput():
        def __init__(self,text,name,portrait):
            self.text = text #对话框内容
            self.name = name #名字
            self.portrait = portrait #头像,存储surface对象
            self.start_x = 0
            if self.portrait != None:
                self.start_x = self.portrait.get_size()[0]
            self.start_y = 0
            if self.name != None:
                self.start_y = self.name.get_size()[1]

    那么,光有内容可是不行的啊,要有头像,名字的对吧,于是就添加了两个参数:name名字,portrait头像

    无头像:

     有头像:

     

    区别在于,文字渲染的起始位置是不同的

    所以,我添加了一个参数start_x,值为0,若有头像则设置为头像的宽度

    有无名字的区别也是这样,就不多bb

    接着,就是分析模块,因为当文字长度到达一定值时,就会超出屏幕边缘,所以需要换行。

    所以就有了参数:start_y绘制高度,和start_x是一个原理

    文字分析器的原理:

    遍历一整段文字,将每个文字都单独分开,单个渲染出来,获取当行文字长度,检测是否超出边缘。

    超出边缘:换行。没有超出:继续渲染并储存在列表里,记录其位置信息

    最后,绘制时只需遍历列表即可。

    如果看不懂的话,上代码,看注释,研究一下

    def makeWords(txt, size, color):#文字渲染,返回 渲染的对象和尺寸
        my_font = pygame.font.Font('../font.ttf', size)
        r = my_font.render(str(txt), True, color)
        return (r, r.get_size())
    
    
    class WordsOutput():
        def __init__(self, text, name, portrait):
            self.startx = 0  # 起始位置
            self.endx = 1280  # 边缘位置
            self.text = text
            self.name = name
            self.portrait = portrait #头像为surface对象
            self.portrait = pygame.transform.scale(self.portrait,(192,192))#压缩图片尺寸到192×192
            if self.portrait != None:  # 如果有头像则改变起始位置
                self.startx = 192#将起始x位置设置为头像宽度
            self.words = []  # 储存渲染出来的文字的列表
            self.analyzed = False  # 是否分析过
            self.interval = time.time()  # 计时器
            self.output_speed = 0.02  # 输出文字的间隔时间
            self.finished_writing = False  # 是否结束输出文字
            self.out_num = 0 #输出的文字编号
        def analyze(self):
            txt = self.text  # 将txt赋值为内容
            height = makeWords(txt[0], 35, (255, 255, 255))[1][1]  # 单个文字高度,用第一个字的高度
            txt_list = []  # 渲染出来的文字列表
            w_last = 0  # 叠加文字后的整体长度
            #初始高度位置
            start_y = 0
            #检测是否有头像
            if self.portrait != None:
                txt_list.append((self.portrait, (0, start_y)))
            #若有名字则将名字渲染出来存储进列表,改变排版
            if self.name != None:
                a = makeWords(self.name, 35, (255, 255, 0))
                txt_list.append((a[0], (self.startx, start_y)))
                start_y += a[1][1]
            #开始遍历文字
            for i in range(len(txt)):
                a = makeWords(txt[i], 35, (255, 255, 255))  # 渲染文字
                if self.startx+w_last+a[1][0] <= self.endx:  # 检测是否超出设定边缘
                    #未超出则记录位置,渲染文字,存储进列表
                    pos = (self.startx+w_last, start_y)
                    txt_list.append((a[0], pos))
                    w_last += a[1][0]
                else:
                    #超出:换行,将x坐标设置为初始值,y则增加一个字的高度
                    start_split = i-1
                    start_y += a[1][1]
                    w_last = 0
                    a = makeWords(txt[i], 35, (255,255,255))
                    pos = (self.startx+w_last, start_y)
                    txt_list.append((a[0], pos))
                    w_last += a[1][0]
            self.words = txt_list
            self.analyzed = True
        def paint(self):
            if self.analyzed == False:
                self.analyze()
            if time.time() >= self.interval + self.output_speed and self.out_num < len(self.words):#检测是否到输出下一个文字的时间并且还未输出完
                self.out_num+=1
                self.interval = time.time()#重置计时器
            for i in range(self.out_num):#绘制到达的文字
                img, pos = self.words[i]
                screen.blit(img, pos)
            if self.out_num == len(self.words): #如果绘制完了
                self.finished_writing = True #将变量设置为True

    这一版的自由度并不高,只能自定义内容,名字,头像,其他的功能实现在下一篇会讲到。

    使用方式:

    #创建计时器,通俗讲就是帧数限制器
    clock = pygame.time.Clock()
    #创建对话框列表,存储对话框
    w1 = []
    #实例化类,写入参数,分别为 内容,名字,头像
    w1.append(WordsOutput("Hello pygame",None,None))
    w1.append(WordsOutput("Hello pygame, let's go", "名字", None))
    while True:
        screen.fill((0,0,0))#填充背景
        for event in pygame.event.get():
            if event.type == pygame.QUIT:#检测退出
                exit()
            if event.type == MOUSEBUTTONDOWN:#检测鼠标是否按下
                if event.button == 1 and len(w1) > 0:#检测是否按下了左键,并且w1不是空列表
                    if w1[0].finished_writing:#如果文字输出完成了,则删除显示的这一项
                        w1.pop(0)
        if len(w1) > 0:#如果w1不是空列表,则调用其第一项
            w1[0].paint()
        clock.tick(0)#将帧数限制设为无限制
        pygame.display.flip()#刷新屏幕
    

    用到的模块有:pygame,time

    导入图片代码:

    img = pygame.image.load(path).convert_alpha()#path:路径
    #convert_alpha()通俗来讲就是优化,提高帧数,并且保留图片的透明像素
    #convert()不保留透明像素

    展开全文
  • Visual C++制作可拖曳四边框的对话框
  • 本文主要介绍用Qt5.9制作登录对话框,该对话框的功能是点击登录按钮后,关闭当前页面,然后弹出主对话框。具体的制作步骤如下所示: 1.1创建一个widget工程,在文件工程右键,选择【添加新文件】,如下图所示: 1.2...

    本文主要介绍用Qt5.9制作登录对话框,该对话框的功能是点击登录按钮后,关闭当前页面,然后弹出主对话框。具体的制作步骤如下所示:
    1.1创建一个widget工程,在文件工程右键,选择【添加新文件】,如下图所示:
    在这里插入图片描述

    1.2【文件和类】选择【Qt】和【Qt设计师界面】
    在这里插入图片描述

    1.3【template\forms】选择【Dialog without Buttons】,然后单击【下一步】。
    在这里插入图片描述

    1.4将【类名©:】改为:Logindlg,单击【下一步】后,在弹出界面选择默认设置,直接点击【完成】,下如图所示:

    在这里插入图片描述

    1.5完成【新文件】添加后,会直接弹出一个新对话框界面,在该界面添加一个按钮,并且添加文字:显示主界面,如下图所示:

    在这里插入图片描述

    1.6点击下图左边的”箭头图标”(Edit Signals/Slots),进入信号和槽编辑模式,
    在这里插入图片描述
    然后用鼠标左键点击【显示主界面】按钮,并且往下拖住不放,则出现如下信号,

    在这里插入图片描述

    送开手后,在弹出界面框中,选择如下图所示:【pushButton】选择clicked(),【Logindlg】选择accept()。
    在这里插入图片描述

    点击【OK】后,结果如下,
    在这里插入图片描述

    1.7点击下图最左边的小图标(Edit Widgets),退出信号和曹模式,进入编辑模式。

    1.8打开main.cpp文件,在main()函数中,添加如下代码:

    int main(int argc, char *argv[])
    {
    QApplication a(argc, argv);
    MainWindow w;
    Logindlg dlg;//实例一个Login类对象
    if(dlg.exec()==QDialog::Accepted)//利用Accepted返回值判断按钮是否被按下//如果没有被摁下,则不会进入主窗口
    }

    1.9构建、运行后,执行结果如下图所示:

    在这里插入图片描述

    在这里插入图片描述

    展开全文
  • JavaFX游戏制作对话框绘制

    千次阅读 2022-04-05 20:15:14
    对话框是很多游戏都有的内容,当我们观察游戏的对话框,会发现其主要内容有:人物头像,对话内容以及对话框背景贴图,这篇文章就主要对对话框进行绘制。 对话框实体类 除了上面我们提到的主要内容以外,我们还需要...

    对话框是很多游戏都有的内容,当我们观察游戏的对话框,会发现其主要内容有:人物头像,对话内容以及对话框背景贴图,这篇文章就主要对对话框进行绘制。

    对话框实体类

    除了上面我们提到的主要内容以外,我们还需要模拟对话框中文字延时展示的效果,也就是每隔一段时间多显示几个字这样的效果。我们采用延时计数的形式进行实现,每当计数器到了某个值的时候才让字符串指针前进,并且当字符串指针已经到达字符串的尾部的时候,将不再前进。

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    // 文字动画类,主要实现的功能是一个字一个字浮现一段话
    public class TextAnimEntity {
    
        // 这个属性是说话的人
        private String name;
        // 这个属性是说的话
        private String text;
        // 人物的头像
        private Image image;
    
        // 背景图片
        private Image bgImage;
    
        private int width = 100;
        private int height = 100;
        // 指针,指向下一个要显示的字
        private int textIdx;
        // 定义一个延时计数器,只有计数器到达一定值的时候才将指针前移
        private int clock;
        private int clock_max;
    
        // 是否完全显示标志位
        private boolean finish;
    
        public TextAnimEntity(String image, String bg_img,String name, String text){
            this.image = new Image(image, width, height, true, true);
            this.bgImage = new Image(bg_img);
            this.name = name;
            this.text = text;
            this.textIdx = 0;
            this.finish = false;
            this.clock = 0;
            this.clock_max = 5;
        }
    
        private String getsub(){
            if (textIdx == 0) {
                return "";
            }
            char[] c = new char[textIdx+1];
            for(int i=0; i<textIdx; i++){
                c[i] = text.charAt(i);
            }
            return new String(c);
        }
    
        // 获取要显示的字
        public synchronized String getnext(){
            if(finish){
                return name + ":" + text;
            }
            if(clock < clock_max){
                //System.out.println(textIdx);
                clock++;
                return name + ":" + getsub();
            } else {
                clock = 0;
                String rst = name + ":" + getsub();
                textIdx++;
                if (textIdx == text.length()) {
                    finish = true;
                }
                return rst;
            }
        }
    }

    绘制类

    绘制类在之前的基础上需要再加上对画框的绘制,由于对话框是显示在最上面的,所以应该最后绘制。

    public class AnimDrawer {
    
        private Canvas canvas;
        private GraphicsContext gc;
    
        // 动画集合
        private List<AnimEntity> animlist;
        // 对话集合
        private List<TextAnimEntity> textlist;
    
        public AnimDrawer(Canvas canvas, GraphicsContext gc){
            this.canvas = canvas;
            this.gc = gc;
            animlist = new ArrayList<>();
            textlist = new ArrayList<>();
        }
    
        // 添加对话实体
        public void addText(TextAnimEntity textEntity){
            textlist.add(textEntity);
        }
    
        // 移除对话实体
        public void removeText(TextAnimEntity textEntity){
            textlist.add(textEntity);
        }
    
        // 添加动画实体
        public void addAnim(AnimEntity animEntity){
            this.animlist.add(animEntity);
        }
    
        // 移除动画实体
        public void removeAnim(AnimEntity animEntity){
            this.animlist.remove(animEntity);
        }
    
        // 开始不停画动画
        public void start(int timeout){
            new Thread(()->{
                while (true) {
                    draw();
                    try {
                        Thread.sleep(timeout);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }).start();
        }
    
        // 在画布上画动画
        public void draw(){
            if(animlist.size() == 0){
                throw new RuntimeException("没有动画呀");
            }
            gc.clearRect(0,0,canvas.getWidth(), canvas.getHeight());
            for(int i=0; i<animlist.size(); i++){
                //System.out.println("aaa");
                gc.drawImage(animlist.get(i).getnext(),
                        animlist.get(i).getPosx(), animlist.get(i).getPosy(),
                        animlist.get(i).getWidth(), animlist.get(i).getHeight());
            }
    
            // 绘制对话
            // 首先在屏幕下半区绘制一个黑色矩形
            //gc.strokeRect(0, 350, canvas.getWidth(), canvas.getHeight()-350);
            TextAnimEntity entity = textlist.get(0);
    
            // 绘制对话框
            gc.drawImage(entity.getBgImage(), 0, 350,canvas.getWidth(), canvas.getHeight()-350);
    
            // 绘制头像
            gc.drawImage(entity.getImage(), 35,380, 50,50);
    
            // 绘制说的话
            gc.setFont(Font.getDefault());
            //System.out.println(entity.getnext());
            //gc.setFill(Color.BLACK);
            gc.strokeText(entity.getnext(), 100, 400);
        }
    }
    

    主启动类

    主启动类主要是添加了加载对话框的内容的代码

    public class MainStage extends Application {
    
        public static void main(String[] args) {
            launch(args);
        }
    
        // 读取文件夹下面的所有图片
        public List<String> getnamelist(String sufix){
            String path = "/workspace/JAVAFXGame/target/classes/image/" + sufix;
            File file = new File(path);
            String[] filelist = file.list();
            List<String> namelist = new ArrayList<>();
            for(int i=0; i<filelist.length; i++){
                namelist.add("/image/" + sufix + "/" + filelist[i]);
            }
            return namelist;
        }
    
        @Override
        public void start(Stage primaryStage) throws Exception {
            Canvas canvas = new Canvas(500,500);
            GraphicsContext gc = canvas.getGraphicsContext2D();
            AnimDrawer animDrawer = new AnimDrawer(canvas, gc);
    
            // 创建动画
            List<String> namelist = getnamelist("role");
            List<String> namelist1 = getnamelist("role1");
    
    
            AnimEntity animEntity = new AnimEntity(namelist, 150, 150, 50, 100);
            AnimEntity animEntity1 = new AnimEntity(namelist1, 150,150, 150,100);
    
            animDrawer.addAnim(animEntity);
            animDrawer.addAnim(animEntity1);
    
    
            // 添加对话实体类
            TextAnimEntity textAnimEntity = new TextAnimEntity("/image/刻晴111.png", "/image/对话框2.png","刻晴", "你们是谁,来这里干什么");
            animDrawer.addText(textAnimEntity);
    
            animDrawer.start(50);
    
            Pane pane = new Pane();
            Scene scene = new Scene(pane, 500,500);
            pane.getChildren().add(canvas);
            primaryStage.setScene(scene);
            primaryStage.show();
    
        }
    }

    效果展示

     图片素材

    本文素材较为简单,就是刻晴的头像以及背景图

     

    展开全文
  • jquery dialog对话框插件制作蓝色的弹出消息对话框代码
  • vc++制作非模态对话框

    2021-11-20 16:16:52
    VC非模式对话框
  • 国内外组合框与颜色对话框控件组合.rar,组合框与颜色对话框组合,显示颜色的ComboBox.zip,XColorPickerXP_demo.zip,combo_color.rar,CSharp_ColorComboBox.rar,,取色器'.exe,TestCombo.zip,ComboBoxTest.rar
  • Axure对话框的设计

    2021-12-11 14:36:59
    大家在日常的原型绘制中经常会遇到绘制中间弹出的对话框的效果,其中会包含基本对话框、确认对话框、输入对话框等 那么如何实现该效果呢,下面咱们以在app端弹出删除对话框为例 1.首先先绘制,拖入按钮元件,为...
  • MFC对话框创建

    2022-04-08 11:23:01
    一、模态对话框 模态对话框有阻塞功能,打开之后不能操作其他对话框。 1、新建MFC项目 2、选择基于对话框 3、插入新的对话框 右键Dialog,插入Dialog。 4、给新的对话框重写ID 右键新的对话框,选中属性...
  • 原生js Dialog对话框插件制作19种对话框弹出层拖动
  • 对话框界面制作

    2013-05-31 08:46:33
    本程序是个简单的小程序,用于制作对话框界面制作,运行不错简单易学,适合初学者
  • vue 简单对话框

    多人点赞 热门讨论 2020-08-28 10:22:51
    初学者 vue 的简单对话框 代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="vue.js" type="text/javascript" ...
  • VC制作非模态对话框.rar
  • css3对话框插件来制作动画弹出表单
  • 在flash制作中遇到元件特别多,图层就越多的情况下,为了方便自己观察和去制作,可以用图层文件夹的方式来将元件图层来分类。...下面进行对话框制作。 首先用到的是椭圆绘画工具。 在属性栏可以调线框粗细
  • LabVEIW自制对话框

    2022-05-08 01:44:54
    LabVEIW自制对话框
  • 内容索引:VB源码,界面编程,对话框 VB制作多用途可的对话框,一种是可以自动关闭的对话框,设定时间,到时无需手动关闭;第二是打开一个始终居中的对话框;第三个是自定义对话框中的字体,系统字体随你选择。
  • vc 制作非模式对话框 源代码.zip
  • 没点击“修改个人资料”显示对话框时 点击“修改个人资料”后,显示自定义对话框 点击保存后,爱好和姓名会发生变化。 点击右上角的“X”会关闭对话框 以上就是啰哩吧嗦的它的动作描述页面代码 index.wxml 样式...
  • 最近在学习C++的MFC图像...Project,弹出“New Project”对话框。 2.左侧面板中Installed Templated的Visual C++下选择MFC,中间窗口中选择MFC Application,然后在下面的Name编辑框中键入工程名称,本例取名“Addit...
  • 泡沫对话框是一种比较流行的趋势因为它改变了传统,通常情况下都是使用html和javascript或者是图片来实现,接下来为大家介绍下使用css3配合html来实现一些简单的泡沫对话框
  • 制作网页中弹出对话框制作

    千次阅读 2019-10-31 08:48:38
    这里写自定义目录标题下面就来用代码介绍一下如何具体实现(以天涯明月刀弹出视频为例)看下完成效果如何插入一段漂亮的代码片生成一个适合你的列表创建一个...#关于网页中弹出对话框制作 制作网页的过程中,很多...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 66,169
精华内容 26,467
关键字:

对话框如何制作