标签: pan

平移和缩放图像

我想在WPF中创建一个简单的图像查看器,使用户能够:

  • 平移(通过鼠标拖动图像).
  • 缩放(带滑块).
  • 显示叠加层(例如矩形选择).
  • 显示原始图像(如果需要,使用滚动条).

你能解释一下怎么做吗?

我没有在网上找到好的样本.我应该使用ViewBox吗?还是ImageBrush?我需要ScrollViewer吗?

谢谢!

c# wpf xaml zoom pan

123
推荐指数
5
解决办法
13万
查看次数

如何使用UIPanGestureRecognizer捕获正在平移的方向?

好的,所以我一直在四处寻找太阳下用于捕捉多点触控手势的所有选项,我终于完成了一圈并回到了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)

我刚刚开始尝试跟踪值之间的差异......试着告诉他们正在淘汰的方式

iphone reverse capture pan uigesturerecognizer

58
推荐指数
3
解决办法
3万
查看次数

我可以导航,放大和缩小R图吗?

我想知道R是否允许平移和缩放使用"绘图"功能生成的图像.我想使用鼠标而不是通过命令行获取绘图转换,是否可能?

提前致谢.

mouse plot r zoom pan

32
推荐指数
3
解决办法
4万
查看次数

是否有一个热键可以在Xcode 4.3中使用鼠标进行Storyboard平移?

我正在寻找一个热键,例如spacebar+ Click 'n drag,这将使我能够使用鼠标来平移Xcode Storyboard.

显然我可以使用鼠标滚轮来平移故事板,但是单击并将其拖动到我想要的确切位置会更加繁琐.

有没有办法通过点击并拖动动作来平移Xcode故事板?

mouse xcode pan xcode-storyboard

25
推荐指数
3
解决办法
7083
查看次数

如何捕获最初在UIPanGestureRecognizer中点击的点?

我有一个应用程序,让用户跟踪屏幕上的行.我是通过在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之后再回头看它.我想我会问这里,然后走这条路.

iphone objective-c pan uigesturerecognizer ios

23
推荐指数
4
解决办法
1万
查看次数

如何使windowSoftInputMode ="adjustPan"泛更多

我有一个活动,上面有一堆EditText字段,windowSoftInputMode设置为adjustPan,这主要是我想要的,但对于布局底部的editText,它不够平衡.它将平移以显示多行编辑文本的顶行,但只要您按Enter键,光标就会向下移动一行,现在隐藏在键盘下方.

无论如何我可以进一步平移,以便editText的顶部一直在窗口的顶部.

使用adjustResize肯定不会做我想要的,pan是正确的,只需要它进一步平移.

android pan

14
推荐指数
1
解决办法
3159
查看次数

D3.js缩放和平移可折叠的树形图

我正在使用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)

javascript zoom pan d3.js

14
推荐指数
1
解决办法
1万
查看次数

如果用户在负方向上平移x和y,UIPanGestureRecognizer不会切换到"结束"或"取消"状态

我对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)

gesture-recognition pan ipad uigesturerecognizer ios

13
推荐指数
1
解决办法
5596
查看次数

放大和平移ImageView Android

我为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)

android zoom pan pinch imageview

13
推荐指数
1
解决办法
2万
查看次数

在SpriteKit中缩放和滚动

我是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)

pan image-zoom ios7 sprite-kit

13
推荐指数
2
解决办法
1万
查看次数