我想创建一个TextBlock(或其他一些文本,其中仅显示文本)是垂直的(-90变换角度),但我希望该元素填充它所包含的垂直空间,但是具有定义的水平量(我使用垂直和水平术语而不是高度和宽度,因为当我有TextBlockgo垂直时它被交换),并且它与容器的左侧对齐.
我相信我理解如何TextBlock使用RenderTransform或使用LayoutTransform.然而,无论何时我改变容器的垂直方面,TextBlock水平方面而不是垂直方向的增加,我似乎无法使"对接"正常工作.
这是我有的:
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
x:Class="AttendanceTracker.StudentView"
x:Name="UserControl" Height="172.666" Width="417.333">
<StackPanel x:Name="LayoutRoot" Orientation="Horizontal">
<Border BorderBrush="Black" BorderThickness="1" RenderTransformOrigin="0.5,0.5" Background="#52FFFFFF" Width="139.667">
<TextBlock Text="My Title" TextWrapping="Wrap" FontSize="18.667" TextAlignment="Center" Foreground="White" Margin="-58.509,68.068,49.158,70.734" Background="Black" RenderTransformOrigin="0.5,0.5" Width="147.017" d:LayoutOverrides="Height">
<TextBlock.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform Angle="-90"/>
<TranslateTransform/>
</TransformGroup>
</TextBlock.RenderTransform>
</TextBlock>
</Border>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
更改UserControl的高度,您会注意到TextBlock水平方面的增加而不是所需的垂直方面.
此代码有效:
class Test
{
public:
Test(string name) : _name(name) {};
bool operator()() { cout << "hello " << _name << endl; return true; }
string name() { return _name; }
private:
string _name;
};
pair<string, bool>
inline execute_test(Test* t) {
return pair<string, bool>(t->name(), (*t)());
}
int main()
{
vector<Test*> tests;
vector<pair<string, bool> > results;
tests.push_back(new Test("Test1"));
tests.push_back(new Test("Test2"));
for (unsigned int i=0; i < tests.size(); ++i)
results.push_back(execute_test(tests[i]));
}
Run Code Online (Sandbox Code Playgroud)
现在我想使用trasform而不是for cicle:
transform(tests.begin(), tests.end(),
results.begin(),
execute_test);
Run Code Online (Sandbox Code Playgroud)
但是我遇到了分段错误.问题出在哪儿?
XAML会如何创建Genie动画效果?取一个任何大小/形状的物体,并将"Genie"带到另一个最小化的位置.有点像OSX窗口最小化.甚至可能通过类似烟雾的效果更加迷人,其中路径更多地切换回来,而不是简单的漏斗(如果这有任何意义).
我猜测有一些可以绘制的路径,并且形状可以沿着该路径移动和变换.只是一个疯狂的猜测.
谢谢你的想法.
我一直在寻找这样的答案.
我在QPixmap transformed()中找到了这个方法,虽然我认为它对我搜索将QPixmap图像(灰度)转换为矩阵的方法没有帮助...
谢谢你的帮助=)
我有一个固定横向的iPad应用程序.一切正常,直到我以编程方式创建UIView并将其添加到我的根UIViewController的视图时 - 它的方向始终设置为纵向,而所有其他内容都以横向模式显示.这个UIView是一个模态视图,显示了一些用户的自定义表单.
AlertView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, [[UIScreen mainScreen] bounds].size.width, [[UIScreen mainScreen] bounds].size.height)];
AlertView.opaque = NO;
AlertView.backgroundColor = [UIColor blackColor];
AlertView.alpha = 0.7;
<...> // some other configuration code
[window addSubview:AlertView];
Run Code Online (Sandbox Code Playgroud)
所以问题是:如何以横向方向启动UIView?我能想到的只是使用变换:
modalView.transform = CGAffineTransformMakeRotation( ( 180 * M_PI ) / 360 );
Run Code Online (Sandbox Code Playgroud)
虽然它不是太优雅的方式......
我想重现这个基于这个很棒的教程准备的jsfiddle (请查看演示).但我不想要键功能,只是悬停.
但这只使用了2个面(正面和背面).
我尝试过,像这样:
#cube {
position: relative;
margin: 100px auto 0;
height: 300px;
width: 300px;
-webkit-transition: -webkit-transform .5s linear;
-webkit-transform-style: preserve-3d;
-moz-transition: -moz-transform .5s linear;
-moz-transform-style: preserve-3d;
}
.face {
position: absolute;
height: 300px;
width: 300px;
padding: 0px;
background-color: rgba(50, 50, 50, 1);
font-size: 27px;
line-height: 1em;
color: #fff;
border: 1px solid #555;
border-radius: 3px;
}
#cube .one {
-webkit-transform: rotateX(90deg) translateZ(150px);
-moz-transform: rotateX(90deg) translateZ(150px);
background:red;
}
#cube .two {
-webkit-transform: translateZ(150px);
-moz-transform: translateZ(150px); …Run Code Online (Sandbox Code Playgroud) 这是可能的使用变化,以获得CSS跨浏览器的文本旋转transform:rotate(XXdeg); 进行正常的浏览器(INC.IE9 +,使用-moz-,-webkit-,-ms-前缀覆盖旧版本).然后,对于IE8和co(应该在IE6 +中工作,虽然IE6和IE7几乎不再受到关注:IE8仍然是一个问题),使用这样的矩阵变换:
filter: progid:DXImageTransform.Microsoft.Matrix(
M11=[ COSINE OF ANGLE ],
M12=[ SINE OF ANGLE ],
M21=[ -1 x SINE OF ANGLE ],
M22=[ COSINE OF ANGLE ],
sizingMethod='auto expand);
Run Code Online (Sandbox Code Playgroud)
...例如 filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.76604444, M12=0.64278761, M21=-0.64278761, M22=0.76604444,sizingMethod='auto expand');
问题是,这两种方法具有不同的变换原点,这意味着虽然它们具有相同的角度,但旋转元素的位置在浏览器之间变化,并且它的变化方式取决于元素的角度和大小,从而使其固定定位不是一项简单的任务.
这是一个现场演示,说明了这一点:http: //jsbin.com/edudof/2/
在非IE8中,可以像这样设置变换原点 - transform-origin: 50% 50%;(指定默认值).我找不到IE8的滤镜矩阵变换的任何等价物,并且我已经尝试设置非IE原点以匹配IE原点(我已经读过 - 虽然随机博客文章 - 显然是在左上角元素,但是transform-origin: top left;离开了).
我对转换起源的含义并不感到困扰(尽管将所有内容都达到50%50%将是理想的).优先考虑的是跨浏览器的结果一致.
我发现并尝试了两件事:
对不起,如果这看起来很基本,但我在网上搜索,找不到另一个答案(这让我觉得我做的事情很愚蠢).
我有一个父母和一个孩子div.我正在尝试将CSS3 translateZ应用于孩子,但似乎没有发生任何事情.
translateX和translateY工作,以及旋转,但不是translateZ.我疯了吗?
这是一个小提琴:http://jsfiddle.net/Sb55D/1/
<div id="main">
<div id="child">
Lorem
</div>
</div>
#main {
display: block;
position: absolute;
width: 400px; height: 400px;
border: thin solid red;
top: 10px;
left: 10px;
-webkit-transform-style: preserve-3d;
}
#child {
display: block;
position: absolute;
top: 50%; left: 50%;
width: 300px;
height: 300px;
border: thin solid green;
-webkit-transform: translate(-50%, -50%) translateZ(-400px);
-webkit-transform-style: preserve-3d;
}
Run Code Online (Sandbox Code Playgroud) 我对网站有一个奇怪的问题.我使用CSS3转换(translate)在按钮处于:active状态时产生"按下"效果.尽管我使用了所有供应商前缀(包括)和没有前缀的标准,但除了IE 11之外,所有浏览器都能很好地工作-ms-.有没有办法在IE 11中实现相同的效果?
#nav-bar li:not(.active-page):active {
-webkit-transform: translate(4px, 4px);
-moz-transform: translate(4px, 4px);
-ms-transform: translate(4px, 4px);
-o-transform: translate(4px, 4px);
transform: translate(4px, 4px);
}
Run Code Online (Sandbox Code Playgroud) 我有一个时间序列的实验数据x = x(t)在两个numpy数组中,x表示观察值,t表示观察值的时间值.是否有一个numpy函数或方法可以评估时间序列的拉普拉斯变换?先感谢您.