我想反转sin/ cos操作以恢复一个角度,但我无法弄清楚我应该做什么.
我已经使用sin和cos以弧度为单位的角度来获得x/y向量:
double angle = 90.0 * M_PI / 180.0; // 90 deg. to rad.
double s_x = cos( angle );
double s_y = sin( angle );
Run Code Online (Sandbox Code Playgroud)
鉴于s_x并且s_y,才可能找回角度?我认为atan2是使用的功能,但我没有得到预期的结果.
我有一个有很多帧的项目,当我重新加载我的项目时,它们被调整为宽度和高度443x270,或者左右.
我确实在运行时驻留帧,但我希望它们会在设计时创建它们.
我使用非嵌入式,经典的未对接视图.任何人都知道如何让帧在编程会话之间保持其大小?
谢谢!
我查看了发布所有优化的发布版本的ASM代码,这是我遇到的内联函数之一:
0061F854 mov eax,[$00630bec]
0061F859 mov eax,[$00630e3c]
0061F85E mov edx,$00000001
0061F863 mov eax,[eax+edx*4]
0061F866 cmp byte ptr [eax],$01
0061F869 jnz $0061fa83
Run Code Online (Sandbox Code Playgroud)
代码很容易理解,它将偏移量(1)构建到表中,将其中的字节值与1进行比较,如果是NZ则进行跳转.我知道我的表的指针存储在$ 00630e3c,但我不知道$ 00630bec来自哪里.
为什么有两个人一个接一个地转向eax?是不是第一个被第二个覆盖了?这可能是缓存优化的事情还是我错过了令人难以置信的明显/模糊的东西?
上述ASM的Delphi代码如下:
if( TGameSignals.IsSet( EmitParticleSignal ) = True ) then [...]
Run Code Online (Sandbox Code Playgroud)
IsSet()是一个内联类函数,并调用TSignalManager的内联IsSet()函数:
class function TGameSignals.IsSet(Signal: PBucketSignal): Boolean;
begin
Result := FSignalManagerInstance.IsSet( Signal );
end;
Run Code Online (Sandbox Code Playgroud)
信号管理器的最终IsSet如下:
function TSignalManagerInstance.IsSet( Signal: PBucketSignal ): Boolean;
begin
Result := Signal.Pending;
end;
Run Code Online (Sandbox Code Playgroud) 我试图将刻度线样式设置为tsManual,分别将最小和最大位置设置为1和100,并在9,19,79和89处添加刻度,除了控件自动显示的第一个和最后一个之外,没有显示任何刻度.我尝试了其他值,但没有显示任何值.我的代码是:
TrackBar1.TickStyle := tsManual;
TrackBar1.Min := 1;
TrackBar1.Max := 100;
TrackBar1.SetTick( 9 );
TrackBar1.SetTick( 19 );
TrackBar1.SetTick( 79 );
TrackBar1.SetTick( 89 );
Run Code Online (Sandbox Code Playgroud)
有什么建议?我确定我错过了一个重要的细节,文档非常稀疏.这是在Delphi 2010中使用更新4的新空VCL Forms项目.
先感谢您.
以下代码在Delphi XE2 Win32下编译并在Win 7 64位下运行,在执行"AudioSessionManager2.GetSessionEnumerator"行时会产生以下异常:
"Project22.exe引发异常类$ C0000005,消息'访问冲突位于0x7027edb2:写入地址0x0051ced6'"
我对异常类或它们的含义的了解是缺乏的,所以我不知道异常意味着什么或如何修复它.
以下是引发异常的代码(用于调试代码的断言):
var
HRES: HRESULT;
DeviceEnumerator: IMMDeviceEnumerator;
DefaultDevice: IMMDevice;
AudioSessionManager2: IAudioSessionManager2;
Enumerator: IAudioSessionEnumerator;
begin
CoInitialize( nil );
HRES := CoCreateInstance( CLSID_MMDeviceEnumerator, nil, CLSCTX_ALL, IID_IMMDeviceEnumerator, DeviceEnumerator );
Assert( Succeeded( HRES ) );
HRES := DeviceEnumerator.GetDefaultAudioEndpoint( eRender, eMultimedia, DefaultDevice );
Assert( Succeeded( HRES ) );
HRES := DefaultDevice.Activate( IID_IAudioSessionManager2, CLSCTX_ALL, nil, IUnknown( AudioSessionManager2 ) );
Assert( Succeeded( HRES ) );
HRES := AudioSessionManager2.GetSessionEnumerator( Enumerator ); // <- EXCEPTION HERE
Assert( Succeeded( HRES ) );
[snip] …Run Code Online (Sandbox Code Playgroud) 我需要为应用程序添加打印功能,我一直在寻找有关打印的信息.逻辑/物理尺寸,dpi,字体缩放等等,因为我以前从未将打印编程到任何应用程序中.
是否有任何网站可以提供有关页面大小,页边距和理解Windows上打印所需的所有其他元素主题的入门知识?我一直在寻找一段时间,但我发现要么是神秘的,要么是岁月......
我一直在玩TPrinter,但我想建立可靠的打印功能,并了解我做得更好.
使用报告解决方案不是一种选择,即使我确信它会更快地提供更好的结果.
delphi ×5
delphi-2010 ×2
angle ×1
assembly ×1
core-audio ×1
delphi-xe2 ×1
math ×1
optimization ×1
printing ×1
trackbar ×1
trigonometry ×1
vcl ×1
windows-7 ×1