我想在WPF中创建一个简单的图像查看器,使用户能够:
你能解释一下怎么做吗?
我没有在网上找到好的样本.我应该使用ViewBox吗?还是ImageBrush?我需要ScrollViewer吗?
谢谢!
好的,所以我一直在四处寻找太阳下用于捕捉多点触控手势的所有选项,我终于完成了一圈并回到了UIPanGestureRecognizer.
我想要的功能非常简单.我已经设置了一个双指平移手势,我希望能够根据我移动的像素数量来移动一些图像.我已经做得很好了,但我希望能够捕获平移手势是否已经反转.
有没有内置的方式,我只是没有看到回过头来做手势?我是否必须存储我的原始起点,然后跟踪终点,然后查看它们之后的移动位置,如果它小于初始终点,然后相应地反转?我可以看到工作,但我希望有一个更优雅的解决方案!
谢谢
编辑:
以下是识别器设置为触发的方法.它有点像黑客,但它有效:
-(void) throttle:(UIGestureRecognizer *) recognize{
throttleCounter ++;
if(throttleCounter == 6){
throttleCounter = 0;
[self nextPic:nil];
}
UIPanGestureRecognizer *panGesture = (UIPanGestureRecognizer *) recognize;
UIView *view = recognize.view;
if(panGesture.state == UIGestureRecognizerStateBegan){
CGPoint translation = [panGesture translationInView:view.superview];
NSLog(@"X: %f, Y:%f", translation.x, translation.y);
}else if(panGesture.state == UIGestureRecognizerStateEnded){
CGPoint translation = [panGesture translationInView:view.superview];
NSLog(@"X: %f, Y:%f", translation.x, translation.y);
}
}
Run Code Online (Sandbox Code Playgroud)
我刚刚开始尝试跟踪值之间的差异......试着告诉他们正在淘汰的方式
我想知道R是否允许平移和缩放使用"绘图"功能生成的图像.我想使用鼠标而不是通过命令行获取绘图转换,是否可能?
提前致谢.
我正在寻找一个热键,例如spacebar+ Click 'n drag,这将使我能够使用鼠标来平移Xcode Storyboard.
显然我可以使用鼠标滚轮来平移故事板,但是单击并将其拖动到我想要的确切位置会更加繁琐.
有没有办法通过点击并拖动动作来平移Xcode故事板?
我有一个应用程序,让用户跟踪屏幕上的行.我是通过在UIPanGestureRecognizer中记录点来实现的:
-(void)handlePanFrom:(UIPanGestureRecognizer *)recognizer
{
CGPoint pixelPos = [recognizer locationInView:rootViewController.glView];
NSLog(@"recorded point %f,%f",pixelPos.x,pixelPos.y);
}
Run Code Online (Sandbox Code Playgroud)
这很好.但是,我对用户在开始平移之前点击的第一点非常感兴趣.但上面的代码只给出了手势被识别为平底锅后的点数(相对于水龙头).
从文档中可以看出,可能没有简单的方法来确定UIPanGestureRecognizer API中最初挖掘的位置.虽然在UIPanGestureRecognizer.h中,我发现了这个声明:
CGPoint _firstScreenLocation;
Run Code Online (Sandbox Code Playgroud)
......似乎是私人的,所以没有运气.我正在考虑完全离开UIGestureRecognizer系统只是为了捕获那个初始点,然后在我知道用户确实已经开始UIPanGesture之后再回头看它.我想我会问这里,然后走这条路.
我有一个活动,上面有一堆EditText字段,windowSoftInputMode设置为adjustPan,这主要是我想要的,但对于布局底部的editText,它不够平衡.它将平移以显示多行编辑文本的顶行,但只要您按Enter键,光标就会向下移动一行,现在隐藏在键盘下方.
无论如何我可以进一步平移,以便editText的顶部一直在窗口的顶部.
使用adjustResize肯定不会做我想要的,pan是正确的,只需要它进一步平移.
我正在使用D3.js绘制一个可折叠的树形图,就像在示例中一样.它的工作主要是不错,但图可能当它进入其正常功能的大小发生显着变化(即,而不是我现在有几个节点,我就会有很多更多).
我想让SVG区域滚动,我已经尝试了我在网上找到的所有东西,但它没有成功.我工作的最好的就是使用d3.behaviour.drag,我在其中拖动整个图表.它远非最佳和毛刺,但它有点可用.
即使如此,我也试图将其清理一下,并且我意识到d3.behaviour.zoom它也可用于平移 SVG区域,根据API文档.
问题:任何人都可以解释如何使其适应我的代码吗?
我希望能够用图表平移 SVG区域,如果可能的话,它会对一些误用做出反应,即尝试将图表平移出视口,并且能够缩放到最大视口的尺寸......
到目前为止这是我的代码:
var realWidth = window.innerWidth;
var realHeight = window.innerHeight;
function load(){
callD3();
}
var m = [40, 240, 40, 240],
w = realWidth -m[0] -m[0],
h = realHeight -m[0] -m[2],
i = 0,
root;
var tree = d3.layout.tree()
.size([h, w]);
var diagonal = d3.svg.diagonal()
.projection(function(d) { return [d.y, d.x]; });
var vis = d3.select("#box").append("svg:svg")
.attr("class","svg_container")
.attr("width", w)
.attr("height", h)
.style("overflow", "scroll")
.style("background-color","#EEEEEE") …Run Code Online (Sandbox Code Playgroud) 我对UIPanGestureRecognizer有一点问题.如果用户平移到左上角(表示负x和y方向),则识别器不会报告UIGestureRecognizerStateEnded状态
如果用户抬起手指时任何方向为正,则状态更改为UIGestureRecognizerStateEnded,但如果两个方向均为负或零,则仅停止报告操作.
这很糟糕,因为我隐藏了一些叠加视图,只要用户拖动某些内容并且这些视图在失败的情况下不会返回.
当然我可以设置一个NSTimer来重新显示一段时间后再次显示覆盖,但我可以看到我的代码中没有明显的错误,我希望它干净.
我错过了什么吗?它是Apple Bug吗?
初始化是这样的:
pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panRecognized:)];
[self addGestureRecognizer:pan];
[pan release];
Run Code Online (Sandbox Code Playgroud)
处理函数如下所示:
- (void)panRecognized:(UIPanGestureRecognizer *)gestureRecognizer {
switch ([gestureRecognizer state]) {
case UIGestureRecognizerStateBegan:
// fade some overlaying views out
break;
case UIGestureRecognizerStateEnded:
case UIGestureRecognizerStateCancelled:
case UIGestureRecognizerStateFailed:
// fade in the overlays
break;
default:
break;
}
// handle panning
}
Run Code Online (Sandbox Code Playgroud) 我为ImageView创建了一个缩放和平移类.
我想要创建的功能. - 它可以单手触摸和移动 - 它可以在两个手指触摸和移动时进行缩放和平移
在大多数情况下,这非常有效.当我执行以下操作时,它有一个小错误: - 我用一根手指平移(状态:没问题) - 我放下第二根手指,放大并平移(状态:没问题) - 我释放了我的第二根手指(状态:图像跳了一点)
希望有人可以帮我解决这个问题.
我认为必须在"case MotionEvent.ACTION_POINTER_UP"中重置mLastTouchX和mLastTouchY
任何帮助将不胜感激!
import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.ScaleGestureDetector;
import android.widget.ImageView;
public class MyImageView extends ImageView {
private static final int INVALID_POINTER_ID = -1;
private float mPosX;
private float mPosY;
private float mLastTouchX;
private float mLastTouchY;
private float mLastGestureX;
private float mLastGestureY;
private int mActivePointerId = INVALID_POINTER_ID;
private ScaleGestureDetector mScaleDetector;
private float mScaleFactor = 1.f;
public MyImageView(Context context, AttributeSet attrs) …Run Code Online (Sandbox Code Playgroud) 我是SpriteKit的新手.我需要通过UIImageView或SpriteNode显示图像(它是游戏的背景图像).但是,我需要用户能够放大背景并平移.我在不使用SpriteKit的情况下轻松完成了这项工作,但无法弄清楚如何让节点接受缩放和平移.如果我在故事板中使用UIScrollView,我场景中添加的所有精灵都不会成为子项,也不会缩放或平移.
是否有可能,你能指出我正确的方向吗?
编辑:
我对你的答案感到有点困惑,但这就是我的所作所为:
在我的根视图控制器.m中:
- (void)viewDidLoad
{
[super viewDidLoad];
SKView * showDesigner = (SKView *)self.view;
SKScene * scene = [iMarchMyScene sceneWithSize:showDesigner.bounds.size];
scene.scaleMode = SKSceneScaleModeAspectFill;
[showDesigner presentScene:scene];
}
Run Code Online (Sandbox Code Playgroud)
在我的场景.m :(你的步骤被评论)
-(id)initWithSize:(CGSize)size {
if (self = [super initWithSize:size]) {
//create SKView (step 1)
SKView *skview_field = [[SKView alloc]initWithFrame:(CGRectMake(0, 0, size.width, size.height))];
//create UIScrollView with same dimensions as your SpriteKit view (step 2)
UIScrollView* uiscrollview_field = [[UIScrollView alloc]initWithFrame:skview_field.frame];
//initialize the field (field is the game's background node)
SKSpriteNode *field = [SKSpriteNode …Run Code Online (Sandbox Code Playgroud)