标签: repaint

如何停止MFC/win32控件重新绘制

我有一个CRichEditCtrl,一个算法在其内容上就地工作,迭代内容并进行更改.这似乎导致它每次重新绘制,这会导致闪烁和明显的时间来完成操作,特别是如果控件开始滚动.我想知道是否有一种巧妙的方法可以阻止它重新粉刷一段时间.它实际上是一个使用CRichEditCtrl的自定义子类,所以我想的是:

void MyCustomEditCtrl::DoAlgorithm()
{
 enableRepaint(false);
 ...
 //to the actual work
 ...
 enableRepaint(true);
}
Run Code Online (Sandbox Code Playgroud)

什么是最好的方法?一个自定义的on-paint处理程序,在进行操作时什么都不做?或者重新粉刷实际上是禁用?

winapi mfc repaint cricheditctrl

2
推荐指数
1
解决办法
2466
查看次数

c ++ gdi动画无效

我试图用gdi创建球动画,但我不能让它工作.我用它创造了一个球

   Graphics graphics(hdc);
Run Code Online (Sandbox Code Playgroud)

钢笔(颜色(255,0,0,255)); graphics.DrawEllipse(&pen,sf,0,10,10); 我有while循环,循环并添加1到sf值基本上像这个sf ++; 比我尝试重新绘制窗口(它不起作用)所以生病最终有一个以上的圈; /这里是循环(循环是int WM_PAINT)

while(sd==1)//sd equals 1
    {
        sf++;
        onPaint(hdc);
        InvalidateRect (hWnd, NULL, TRUE);// this should repaint the window but it doesn't
        UpdateWindow(hWnd);
    }
Run Code Online (Sandbox Code Playgroud)

提前谢谢拉米

c++ winapi gdi repaint visual-c++

2
推荐指数
1
解决办法
2126
查看次数

Thread.sleep和重新绘制

我有一个显示文本的面板.我希望面板更改其文本,然后在其他任何事情发生之前暂停应用程序.我正在使用Thread.sleep(1000).但是,出于某种原因,应用程序在调用Thread.sleep之前没有完成绘制面板(文本没有被更改).我也试过这个:

board.invalidate();
board.setLeftMessage("Not");
board.setRightMessage("Here");
board.revalidate();
Date current = new Date();
long timeNow = current.getTime();
Date newDate = new Date(timeNow + 1000);
while (current.before(newDate))
    current = new Date();
Run Code Online (Sandbox Code Playgroud)

但也没有运气.有人有建议吗?非常感谢.

java swing multithreading repaint

2
推荐指数
1
解决办法
2925
查看次数

如何清除/重置JFrame

我和我的朋友决定开展一个在3个屏幕之间循环的纸牌游戏(Player1HandScreen,Player2HandScreen和FightScreen).

一旦Player1从中选择了他们的卡Player1HandScreen,就会Player1HandScreen导致Player2HandScreenPlayer2做同样的事情.然后Player2HandScreen导致FightScreen比较两张牌并且一名玩家被宣布为该轮的赢家.

我们遇到的问题是,一旦轮次结束我们想要清除Player1HandScreen以及Player2HandScreen一旦刷新我们的参数,我们就无法成功更新GUI.

我们已经尝试过使用removeAll(),但我们无法将其用于repaint()validate().

我们也进行了调查super.paintComponents(g),updateUI()但两者都给我们带来了希望和梦想.

java validation jframe repaint removeall

2
推荐指数
1
解决办法
5万
查看次数

摆动速度限制

我有一个很长的重绘操作,我想限速,即确保它最多每N毫秒调用一次.

我目前的解决方案有点令人不满意:我使用Timer持续时间较短的Swing ,restart()每当我收到一个事件时我都会这样做.这样可确保在N毫秒窗口内发生事件时不会触发重绘(即重绘将在事件发生并且N毫秒"安静"时间段过去后发生).

我想要的是确保在第一个事件后最多N毫秒调用重绘,并且重绘时间最多为N.任何想法?(没有记录调用start已启动的效果Timer).

java swing repaint rate-limiting

2
推荐指数
1
解决办法
1062
查看次数

Swing:屏幕组件未按预期刷新

我有一个middlePanel,显示panel1,里面有6个按钮.单击按钮时,其他组件将显示在mainPanel中,最后返回到panel1.

我面临的问题是:组件不会立即显示 - 我开始移动光标使其可见.我用来设置面板的代码是:

public void SetMainPanel(JPanel panel) {
    middlePanel.removeAll();
    this.middlePanel = panel;
    panel.setVisible(true);
    this.middlePanel.setVisible(true);
    mainPanel.add(middlePanel, BorderLayout.CENTER);
    middlePanel.revalidate();
    middlePanel.repaint();
    mainPanel.revalidate();
    mainPanel.repaint();
}
Run Code Online (Sandbox Code Playgroud)

请参阅已设置的传递面板可见,以及添加它的中间面板.updateui&validate包含middlePanel的middlePanel和mainPanel.但为什么会出现这个问题.

任何人都可以帮助我知道为什么这个问题以及如何解决它.我觉得他们是解决这个问题的一种方法但却无法回想起来.

java swing components refresh repaint

2
推荐指数
1
解决办法
3320
查看次数

Alt键导致表单重绘

我遇到了一个问题,我希望你们中的一个好思想家能够克服......

出于某种原因,一旦我加载了我的Windows窗体,如果用户按下该Alt键,表单将重绘,从而导致闪存.

这只会在第一次发生,因此任何后续Alt按键都不会发生任何事情.

我没有处理按键的任何菜单条或事件,所以我只能假设它是我没有设置的设置,或者是我在不知不觉中设置的设置.

仅供参考,表单在构造函数中执行以下操作

DoubleBuffered = true;
SetStyle(ControlStyles.OptimizedDoubleBuffer | 
         ControlStyles.AllPaintingInWmPaint, true);
Run Code Online (Sandbox Code Playgroud)

这是因为我有许多面板和标签也是如此,以实现透明度.

手指交叉,其中一个你会知道为什么;)

c# repaint winforms

2
推荐指数
1
解决办法
1391
查看次数

C#Panel.Refresh()不调用paint方法

我试图调用panel1 paint方法用橙色线重新绘制面板(它用蓝线启动).

我已经尝试过invalidate(),update()和refresh(),但似乎没有任何东西可以调用panel1的paint事件......

paint事件处理程序已添加到panel1:

this.panel1.Paint += new System.Windows.Forms.PaintEventHandler(this.panel1_Paint);
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);

        Form1 testForm = new Form1();
        Application.Run(testForm);

        testForm.drawNewLine();
    }
}
Run Code Online (Sandbox Code Playgroud)
public partial class Form1 : Form
{
    bool blueLine = true;
    bool orangeLine = false;

    public Form1()
    {
        InitializeComponent();
    }

    private void panel1_Paint(object sender, PaintEventArgs e)
    {
        Graphics g = e.Graphics;

        if (blueLine == true)
        {
            Pen bluePen …
Run Code Online (Sandbox Code Playgroud)

c# panel .refresh repaint

2
推荐指数
1
解决办法
1万
查看次数

绘制Runnable JPanel

我正在研究这个小型赛马模拟器并且坚持使用它.我希望用户首先选择比赛中的马匹数量(2-6),然后单击"开始"按钮.然后,我想绘制/绘制赛道和马(由圆圈表示).出于某种原因,当代码到达创建Horse实例的点时,它永远不会被绘制到框架中.下面是代码.我错过了什么?

Main.java:

import javax.swing.SwingUtilities;

public class Main {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {     
            @Override
            public void run() {
                RaceTrack myRace = new RaceTrack();
                myRace.setVisible(true);
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

RaceTrack.java:

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.border.Border;

public class RaceTrack extends JFrame implements Runnable {
    public RaceTrack() {
        initUI();
    }
    public static int selectedRaceSize = 2;
    private void initUI() {
        final Container …
Run Code Online (Sandbox Code Playgroud)

java user-interface multithreading repaint paintcomponent

2
推荐指数
1
解决办法
4810
查看次数

我正在尝试在JFrame中绘制一个字符串,但它不起作用..请帮助

我正在尝试按下按钮时显示一个字符串,但它不起作用.我不知道问题是什么.我没有错误,但这并没有打扰我.我想,我遗漏了一些基本的东西.请帮忙!!

//I'm trying to draw a string in the frame when a button is pressed, but it won't work..
//Can't figure out what the problem is.


import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

class AppletTwo extends JFrame implements ActionListener
{

    JFrame frameOne;
    JButton btnOne;

    AppletTwo()
    {

        frameOne = new JFrame("frameOne");
        frameOne.setSize(320,240);
        frameOne.setLayout(new FlowLayout(FlowLayout.LEFT));
        frameOne.setVisible(true);
        frameOne.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        btnOne = new JButton("Print");
        btnOne.addActionListener(this);
        frameOne.add(btnOne);
    }

    public void actionPerformed(ActionEvent ae)
    {

        if(ae.getSource() == btnOne)
        {
            repaint();
        }
    }

    public void paint(Graphics g)
    {
        g.drawString("Never Works",150,150); …
Run Code Online (Sandbox Code Playgroud)

java swing paint jframe repaint

2
推荐指数
1
解决办法
461
查看次数