我一直在寻找一种方法来创建一个很好的进度条.我找到了一些我用过的代码,如果我使用了循环,它的效果很好.但现在我想在一个真正体面的应用程序中使用它,它给了我很多麻烦.我有一个应用程序,我在IMDB上查找数据,所以我连接到IMDB例如500 movietitles,所以这需要一段时间.所以我想展示一个进度条,其中每个电影的条形图都会增长,并且在movietitle上有一些额外的信息.
我使用以下类:
public partial class ProgressDialog : Window, IProgressContext
{
public ProgressDialog()
{
InitializeComponent();
IconBitmapDecoder ibd = new IconBitmapDecoder(
new Uri("IMDB.ML.ico", UriKind.RelativeOrAbsolute),
BitmapCreateOptions.None, BitmapCacheOption.Default);
this.Icon = ibd.Frames[0];
}
public void UpdateProgress(double progress)
{
Dispatcher.BeginInvoke(DispatcherPriority.Background,
(SendOrPostCallback)delegate { Progress.SetValue(ProgressBar.ValueProperty, progress); }, null);
}
public void UpdateStatus(string status)
{
Dispatcher.BeginInvoke(DispatcherPriority.Background,
(SendOrPostCallback)delegate { StatusText.SetValue(TextBlock.TextProperty, status); }, null);
}
public void Finish()
{
Dispatcher.BeginInvoke(DispatcherPriority.Background,
(SendOrPostCallback)delegate { Close(); }, null);
}
}
public interface IProgressContext
{
void UpdateProgress(double progress);
void UpdateStatus(string status);
void Finish();
} …Run Code Online (Sandbox Code Playgroud) 即将面临在QT中为动画提供动画的问题.
以下代码中的错误在哪里,我得到了继续进度条,但它没有动画
QApplication a(argc, argv);
QProgressDialog *dialog = new QProgressDialog();
QProgressBar *pbar = new QProgressBar(dialog);
pbar->setMinimum(0);
pbar->setMaximum(0);
pbar->setTextVisible(false);
QDesktopWidget *desktop = QApplication::desktop();
QRect rect = desktop->geometry();
pbar->setGeometry(rect.left(),rect.top(),rect.right(),rect.bottom()-300);
pbar->show();
dialog->setBar(pbar);
dialog->showMaximized();
dialog->exec();
return a.exec();
Run Code Online (Sandbox Code Playgroud)
我该如何正确更新进度条?
我在几秒钟内有一个循环...从60到0(x--)我需要正确更新进度条.
考虑到条形值从0.0到1.0,我需要用什么材料来更新条形?
NSLog(@"PROGRESS: %2.2f", ABS(log(100/x)) );
[countDownBar setProgress:ABS(log(100/x)) ];
Run Code Online (Sandbox Code Playgroud)
谢谢.
我想制作一个进度条来跟踪我正在做的每个事件的状态,而不是一个静音程序或一个带控制台的程序.
事件:
等...
现在,在我完成其中一个任务之后,我将增加进度条以指示它已完成,并且我写入DataGridTable,状态已从"正在计算..."更改为"完成".
为简单起见,我说我有一个文件compute.cs和form.cs. 我的表单启动了,我按下'execute'运行compute.cs脚本,该脚本通过以下方式将其状态转发回表单:
compute.cs
form.SetStatus(eventId,eventStatus);
form.cs
委托void SetMetricStatusDelegate(字符串度量,字符串状态);
public void SetMetricStatus(字符串度量,字符串状态){...}
最后,问题.我运行我的程序,每个任务大约需要三秒钟才能完成,但进度条和表格没有更新.完成所有事件后,进度条和表格将正确更新.
使用C#表单上的进度条记录进度的正确方法是什么?
我会说这个简短的:
在Wicket中有一个方法/库显示活动指示器吗?你知道,在用户等待的时候移动的旋转东西,还是只是一个javascript的东西?
谢谢你的帮助.
我尝试创建一个进度条,显示解析器读取文本文件的进度.
为此,我使用fileSize = FileInfo(file).Length和在每次迭代中读取文件的字节,我总结了当前行的字节
sum += reader.CurrentEncoding.GetByteCount(currentLine)
我假设当我读完整个文件时,sum应该等于fileSize.
但是,事实并非如此.sum总是低几千字节fileSize.为什么是这样?如何正确创建显示我已解析的文件数量的进度?
我正在使用WPF的ProgressBar对象,它具有Value属性,我可以传递一个常量的int或十进制值,它不会抱怨,但如果我传递一个float(或int或string)变量值,它会barfs一个ArgumentException(例如"Message='0.02380952' is not a valid value for property 'Value'.")在我身上,这对我来说似乎是荒谬的,让我难过.我跟随的MS示例使用常量浮点值.然而,MS文档对Value属性的引用表示它是一个int,这似乎是错误的,因为我可以将它传递给常量.1或.5并获得正确的行为,而我的MS示例使用0和1以及最小值和最大值.那么,我需要做什么呢?
我的代码:
XAML:
<ProgressBar x:Name="prgProgress" Width="200" Height="20" Minimum="0" Maximum="100" />
Run Code Online (Sandbox Code Playgroud)
C#:
float numMems = ListToShow.Count;
float numDone = 0.0f;
int fracDone = 0;
string sProgress = "0%";
foreach (RAM_Member mem in ListToShow)
{
if (isCanceled == true) break;
mem.CalculateValues();
numDone++;
fracDone = (int)(100.0 * numDone / numMems);
sProgress = (100 * numDone / numMems).ToString("0.") + "%";
Dispatcher.BeginInvoke(DispatcherPriority.Background, (SendOrPostCallback)delegate { prgProgress.SetValue(ProgressBar.ValueProperty, fracDone); }, null);
Dispatcher.BeginInvoke(DispatcherPriority.Background, (SendOrPostCallback)delegate { …Run Code Online (Sandbox Code Playgroud) 我想为我的应用创建自定义进度条.我是iOS开发的新手,发现很难理解google上的代码让我感到很困惑.我想要的就像增长动画进度条.例如:喜欢显示从小植物(到完整树)的树木生长方面的进展,其表示过程完成.
在哪里以及如何开始?还有Core Graphics或cocos2d哪个适合这个?
我正在尝试实现新的Windows 7任务栏进度条.我设法使用以下代码使其与TBPF_NORMAL状态一起工作:
CoCreateInstance(CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&taskbarList));
HRESULT c = taskbarList->SetProgressState(hWnd, TBPF_NORMAL);
if (c != S_OK) MessageBox("ERROR");
taskbarList->SetProgressValue(hWnd, 5, 10);
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用TBPF_INDETERMINATE尝试完全相同的代码,它不显示任何内容,也没有错误:
CoCreateInstance(CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&taskbarList));
HRESULT c = taskbarList->SetProgressState(hWnd, TBPF_INDETERMINATE);
if (c != S_OK) MessageBox("ERROR");
Run Code Online (Sandbox Code Playgroud)
有谁知道可能导致这个问题的原因是什么?