我想我可以把它扔到那里然后问:我已经看到Delphi控件在图形效果方面完美无缺.含义:没有闪烁,分段更新(仅重绘标记为脏的控件部分)和平滑滚动.
我已经编写了很多多年来图形控制的,所以我知道双缓冲,DIBS,bitblts和所有的"共同"的东西(我一直使用的DIB如果可能的话绘制的一切,但有一个开销).还要了解InvalidateRect并检查需要更新的实际rect的TCanvas.ClipRect.尽管有这些典型的解决方案,但我发现创建与Developer Express或Razed Components相同质量的组件非常困难.如果图形是平滑的,你可以打赌滚动条(本机)闪烁,如果滚动条和框架是平滑的,你可以在滚动期间发誓背景闪烁.
是否有标准的代码设置来处理这个问题?一种确保平滑重绘整个控件的最佳实践 - 包括控件的非客户区域?
例如,这是一个"裸骨"控件,它为分段更新占用高度(仅重绘所需的内容).如果在表单上创建它,请尝试在其上移动一个窗口,然后观察它用颜色替换部件(请参阅绘制方法).
有没有人有类似的基类可以处理非客户区重绘而不闪烁?
type
TMyControl = Class(TCustomControl)
private
(* TWinControl: Erase background prior to client-area paint *)
procedure WMEraseBkgnd(var Message: TWmEraseBkgnd);message WM_ERASEBKGND;
Protected
(* TCustomControl: Overrides client-area paint mechanism *)
Procedure Paint;Override;
(* TWinControl: Adjust Win32 parameters for CreateWindow *)
procedure CreateParams(var Params: TCreateParams);override;
public
Constructor Create(AOwner:TComponent);override;
End;
{ TMyControl }
Constructor TMyControl.Create(AOwner:TComponent);
Begin
inherited Create(Aowner);
ControlStyle:=ControlStyle - [csOpaque];
end;
procedure TMyControl.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
(* When a window has this style …Run Code Online (Sandbox Code Playgroud) 我有一个在delphi中编码的命令行应用程序,我需要从普通的桌面应用程序(也用delphi编写)调用.简而言之,我想调用命令行应用程序并在列表框中显示它"实时"输出的文本.
自从我使用shell以来已经很久了,但我清楚地记得,为了从命令行应用程序中获取文本 - 我必须使用管道符号">".像这样:
C:/mycmdapp.exe> c:/result.txt
这将打印到shell的任何文本(使用writeLn)并将其转储到名为"result.txt"的文本文件中.
但是......(这里有泡菜),我想要一个实时结果而不是一个积压文件.一个典型的例子是Delphi编译器本身 - 它设法向IDE报告发生了什么.如果我的记忆正确地为我服务,我似乎记得我必须创建一个"管道"通道(?),然后将管道名称分配给shell调用.
我试图谷歌这个但我老实说不确定如何制定它.希望社区中的某些人能指出我正确的方向.
更新:此问题可能与如何在Delphi中运行命令行程序相同?.虽然标题和问题本身并不相同,但有些答案符合我的要求.
今天我用最新版本的MonoDevelop,MonoTouch和Mono-Framework更新了我的mac.我还下载了最新版本的XCode,版本4(一个漂亮的4.5 gig下载).
起初我没有注意到它,因为我忙于将代码复制到我的项目中以便重复使用.但是,当实际添加一些控件,动作和出口到MainWindow文件的时候 - 我意识到缺少了一些东西.
希望我有点过分了,因为我找不到添加插座和动作的功能了吗?在谷歌搜索问题之后,我意识到新的XCode现在通过代码完成这些工作 - 但不是在C#中,它只是一个Objective C的东西.
我究竟如何解决这个问题?我目前正在下载XCode 3.2.6,但肯定有更好的选择吗?(我甚至不知道这是否会安装在4.x版本上)我究竟如何通过代码定义动作和出口?是否有任何教程可以缩短所需的额外时间?
欢迎任何帮助
更新:需要删除XCode并从头开始的人的提示.打开终端窗口并键入:
"sudo /Developer/Library/uninstall-devtools --mode=all"
Run Code Online (Sandbox Code Playgroud)
这将删除您当前的XCode安装(全部).请记住以后重新启动Mac.然后,您可以安装旧版本的XCode.
我只是在学习Javascript,我很想知道,正在使用原型声明,如下所示:
function TSomeObj()
{
this.name="my object";
}
TSomeObj.prototype.showname = function() {
alert(this.name);
}
Run Code Online (Sandbox Code Playgroud)
基本上像这样做:
function TSomeObj()
{
this.name="my object";
this.showname = function() {
alert(this.name);
}
}
Run Code Online (Sandbox Code Playgroud)
当我转储对象的属性时,我得到相同的结果:
TSomeObj (inline version) =
{
'name': 'my object',
'test': function
}
TSomeObj (prototype declaration) =
{
'name': 'my object',
'test': function
}
Run Code Online (Sandbox Code Playgroud)
使用原型声明的好处是什么?除了更少的混乱和更有序的源代码或许.
更新:我或许应该使人们更清楚,这是最终的结果,我很好奇.最终结果是相同的(即在对象原型中都注册了一个新函数) - 但是他们这样做的方式却截然不同.感谢您的所有回复和信息!
前段时间webkit(以及Safari)开始支持元素的CSS画布背景(来源:http://www.webkit.org/blog/176/css-canvas-drawing/).
这可以大大简化游戏和多媒体的创建,因为你不需要将画布标签注入DIV(例如),而只需直接挂入DIV的背景.也许这样的东西:
<div id="gameview"
style="background: -webkit-canvas(myscreen); width: 320px; height: 480px;">
</div>
<script>
var target = document.getElementById("gameview");
var wd = target.clientWidth;
var hd = target.clientHeight;
var context = document.getCSSCanvasContext("2d", "myscreen", wd, hd);
/* draw stuff here */
</script>
Run Code Online (Sandbox Code Playgroud)
我在想,这有什么速度惩罚吗?从理论上讲,我认为绘制背景画布应该比绘制画布标签更快,特别是如果目标元素为空.
有没有人为高速演示或游戏测试过这个?
似乎Apple(再次)通过iOS 5.1更新增加了Safari Mobile和javascript HTML5开发的限制.然而,由于八卦的程度,找到有关这些变化的事实令人沮丧.
有人说只有localstorage对象被移动到缓存中,而globalstorage和sessionstorage像以前一样工作(因为较大的站点使用这些,如facebook,通过合作伙伴网站登录).
有些人还说数据库仍然是持久性的,而另一些人则说这些数据库现在也存储在浏览器的缓存中 - 因此只要iOS感觉它就会被刷新.
有人可以用事实来启发我们吗?如果可能,最好使用源参考.
Delphi数据绑定向导似乎遇到了复杂XSD文件的问题.每当几个XSD文件相互引用时(使用我相信的@include关键字),名称空间的前缀就会消失.这使得无法将Delphi XML数据绑定向导与大型复杂模式一起使用.在我的例子中,挪威政府使用的标准消息结构.
是否有标记的替代xml数据绑定向导?目前,我必须通过不太可取的代码生成XML.使用自动化向导的重点是节省时间并能够更快地适应标准的变化.
有关该问题的更深入介绍,请参阅以下文章:Delphi XML Databinding的难点
我没有使用synEdit一段时间,但今天我发现我需要一个好的编辑器来支持脚本.当我去下载synEdit(我的思想已经及时冻结为"确定的事情")时,我发现原作者已经放弃了它.我知道FreePascal有一个synEdit版本 - 我听说有一个更近期的unicode版本"某处" - 但我在哪里可以获得最新和最好的版本?
如果可能的话,我更喜欢unicode支持,但更重要的是支持动态样式(能够添加令牌以强调下划线关键字,有点像Delphi在你访问你刚输入的类的变量时所做的那样).
作为一般规则,我通过利用Const(无类型)参数而不是硬编码类型来使用指针时绕过了许多经典设计陷阱.这使我在执行高级图形功能时具有速度优势,同时将技术细节留给编译器.它还使得在Delphi和Free Pascal中使用相同的代码变得容易,只需要进行很少的更改.但是,由于Embarcadero关于Delphi演变的vauge声明以及它的upcomming安全模型,我已经开始质疑这一点.
例如,concider以下示例:
Type TSomeDataProc = procedure (const aInput;var aOutput) of Object;
(* Convert 8-bit pixel to 16-bit pixel *)
Procedure TMyClass.ProcessSomeData08x565(Const aInput;var aOutput);
var r,g,b: Byte;
Begin
FPalette.ExportTriplets(Byte(aInput),r,g,b);
Word(aOutput):=(R SHR 3) SHL 11 or (G SHR 2) SHL 5 or (B SHR 3);
End;
(* Convert 16-bit pixel to 24-bit pixel *)
Procedure TMyClass.ProcessSomeData565x888(Const aInput;var aOutput);
Begin
With TRGBTriple(aOutput) do
Begin
rgbtRed:=(((word(aInput) and $F800) shr 11) shl 3);
rgbtGreen:= (((word(aInput) and $07E0) shr 5) shl 2);
rgbtBlue:= ((word(aInput) and …Run Code Online (Sandbox Code Playgroud) delphi ×6
javascript ×3
synedit ×2
64-bit ×1
c# ×1
canvas ×1
firemonkey ×1
freepascal ×1
graphics ×1
html5 ×1
ios ×1
monodevelop ×1
pipe ×1
safari ×1
shellexecute ×1
webkit ×1
winapi ×1
xamarin.ios ×1
xml ×1
xsd ×1